Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Conway elumäng

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.

Võimalused

  • 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.

Nõuded

  • CMake 3.20 või uuem.
  • C++20 toega kompilaator.
  • Internetiühendus esimesel GUI seadistamisel, sest CMake kasutab SFML-i allalaadimiseks FetchContent moodulit.

Kui soovid ehitada ainult konsooliversiooni, ei ole SFML-i allalaadimist vaja.

Ehitamine

Mõlema versiooni ehitamine:

cmake -S . -B build
cmake --build build

Ainult konsooliversiooni ehitamine:

cmake -S . -B build -DBUILD_GUI=OFF
cmake --build build

Visual 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.

Käivitamine

Konsooliversioon:

.\build\Debug\ryhmatoo.exe

GUI versioon:

.\build\Debug\ryhmatoo_gui.exe

Kui sinu generaator paigutab failid otse build kausta, kasuta vastavalt:

.\build\ryhmatoo.exe
.\build\ryhmatoo_gui.exe

Konsooliversioon

Konsooliversioon 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.

GUI juhtimine

Alguses avaneb mustrivaliku vaade.

Mustrivalikus:

  • 1 - Blinker
  • 2 - Toad
  • 3 - Glider
  • 4 - Lightweight Spaceship
  • 5 - Diehard
  • 6 - R-pentomino
  • D - tühi ruudustik vaba joonistamise jaoks
  • H - näita või peida juhend

Simulatsiooni vaates:

  • Space - käivita või pane pausile
  • Right Arrow - liigu ühe generatsiooni võrra edasi
  • Left Arrow - liigu ajaloos ühe generatsiooni võrra tagasi
  • C - puhasta ruudustik
  • P - mine tagasi mustrivalikusse
  • H - 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.

Projekti struktuur

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

Autorid

Jasper Suursild ja Raul Raudsepp

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages