Conway’s Game of Life to symulacja automatu komórkowego, w której stan każdej komórki w siatce ewoluuje w czasie na podstawie prostych reguł dotyczących jej sąsiadów.
Zasady Gry
Gra toczy się na dwuwymiarowej siatce komórek, z których każda może być w jednym z dwóch stanów:
Żywa (oznaczona kolorem zielonym w implementacji)
Martwa (oznaczona kolorem czarnym w implementacji)
Stan komórki w następnej generacji zależy od stanu jej ośmiu sąsiadów w obecnej generacji, zgodnie z następującymi regułami:
Martwa komórka z dokładnie trzema żywymi sąsiadami staje się żywa (narodziny).
Żywa komórka z mniej niż dwoma żywymi sąsiadami umiera z powodu niedoludnienia.
Żywa komórka z dwoma lub trzema żywymi sąsiadami pozostaje żywa.
Żywa komórka z więcej niż trzema żywymi sąsiadami umiera z powodu przeludnienia.
Zadanie
Twoim zadaniem jest uzupełnienie kodu symulacji Game of Life. Poniżej znajduje się szkielet kodu, który musisz wypełnić.
Uzupełnij funkcję draw_grid, rysując na ekranie siatkę komórek z odpowiednimi kolorami (zielony dla komórek żywych, czarny dla martwych).
Uzupełnij brakującą część pętli while w game_event_loop tak aby gra wyświetlała kolejne generacje oraz reagowała na zdarzenia użytkownika.
Dodatkowe wyzwanie: Zaimplementuj różne początkowe wzory (np. Glider, Gosper glider gun).
Dodatkowe wyzwanie: Dodaj kontrolę prędkości symulacji. Zaimplementuj możliwość przewijania generacji.
Przykładowe sterowanie
Spacja: Wznawia/wstrzymuje symulację.
R: Resetuje siatkę do losowego układu.
C: Czyści siatkę (wszystkie komórki martwe).
Lewy Przycisk Myszy: Kliknięcie komórki przełącza jej stan (żywa/martwa), ale tylko gdy symulacja jest wstrzymana.