See projekt on C++20 keeles kirjutatud Conway elumängu simulatsioon. Projektis on kaks käivitatavat versiooni:
ryhmatoo- konsooliversioon, kus saab valida algmustri ja vaadata generatsioonide arengut tekstina.ryhmatoo_gui- SFML-il põhinev graafiline versioon, kus saab mustreid valida, ruudustikku hiirega muuta ja simulatsiooni sammhaaval juhtida.
Mõlemad versioonid kasutavad samu Grid, Cell ja Templates klasse.
- Conway elumängu reeglite põhine generatsioonide arvutamine.
- Kuus valmis algmustrit:
- Blinker
- Toad
- Glider
- Lightweight Spaceship
- Diehard
- R-pentomino
- Konsooliversioon 20x20 ruudustikul.
- Graafiline versioon 40x30 ruudustikul.
- GUI-s simulatsiooni käivitamine, pausile panemine, puhastamine ning edasi ja tagasi liikumine.
- GUI-s vaba joonistamise režiim.
- GUI-s juhendi aken.
- CMake seadistus, mis laeb GUI ehitamisel SFML 3.0.0 automaatselt alla.
- CMake 3.20 või uuem.
- C++20 toega kompilaator.
- Internetiühendus esimesel GUI seadistamisel, sest CMake kasutab SFML-i
allalaadimiseks
FetchContentmoodulit.
Kui soovid ehitada ainult konsooliversiooni, ei ole SFML-i allalaadimist vaja.
Mõlema versiooni ehitamine:
cmake -S . -B build
cmake --build buildAinult konsooliversiooni ehitamine:
cmake -S . -B build -DBUILD_GUI=OFF
cmake --build buildVisual Studio või muu multi-config generaatori puhul tekivad käivitatavad failid
tavaliselt alamkausta build\Debug. Ühe konfiguratsiooniga generaatorite
puhul võivad need asuda otse kaustas build.
Konsooliversioon:
.\build\Debug\ryhmatoo.exeGUI versioon:
.\build\Debug\ryhmatoo_gui.exeKui sinu generaator paigutab failid otse build kausta, kasuta vastavalt:
.\build\ryhmatoo.exe
.\build\ryhmatoo_gui.exeKonsooliversioon küsib käivitamisel algmustri numbrit. Kui valik ei ole 1-6, kasutatakse vaikimisi Blinker mustrit.
Simulatsioon liigub automaatselt edasi iga 200 millisekundi järel. Mäng lõpeb, kui kõik rakud on surnud või ruudustik jääb kahe järjestikuse generatsiooni vahel samaks.
Alguses avaneb mustrivaliku vaade.
Mustrivalikus:
1- Blinker2- Toad3- Glider4- Lightweight Spaceship5- Diehard6- R-pentominoD- tühi ruudustik vaba joonistamise jaoksH- näita või peida juhend
Simulatsiooni vaates:
Space- käivita või pane pausileRight Arrow- liigu ühe generatsiooni võrra edasiLeft Arrow- liigu ajaloos ühe generatsiooni võrra tagasiC- puhasta ruudustikP- mine tagasi mustrivalikusseH- näita või peida juhend- Vasak hiireklõps - muuda ruudu olekut
- Vasak hiireklõps ja lohistamine - joonista või kustuta mitu ruutu
GUI ülariba näitab simulatsiooni olekut ja generatsiooni numbrit. Kui juhend on avatud, püüab see hiireklõpsud kinni, et ruudustikku kogemata ei muudetaks.
include/ Päisefailid
src/main.cpp Konsooliversiooni sisendpunkt
src/main_gui.cpp GUI versiooni sisendpunkt
src/gui_overlay.cpp GUI ülariba, juhend ja mustrivalik
src/grid.cpp Ruudustiku loogika
src/cell.cpp Ühe raku loogika
src/templates.cpp Valmis algmustrid
CMakeLists.txt Ehituse seadistus
Jasper Suursild ja Raul Raudsepp