From 6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6 Mon Sep 17 00:00:00 2001 From: Elizabeth Alexander Hunt Date: Thu, 2 Jul 2026 11:55:17 -0700 Subject: Init --- Homework/cs3460/gameoflife/main.cpp | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Homework/cs3460/gameoflife/main.cpp (limited to 'Homework/cs3460/gameoflife/main.cpp') diff --git a/Homework/cs3460/gameoflife/main.cpp b/Homework/cs3460/gameoflife/main.cpp new file mode 100644 index 0000000..59b19a9 --- /dev/null +++ b/Homework/cs3460/gameoflife/main.cpp @@ -0,0 +1,57 @@ +#include "LifeSimulator.hpp" +#include "Pattern.hpp" +#include "PatternAcorn.hpp" +#include "PatternGosperGliderGun.hpp" +#include "PatternRandom.hpp" +#include "RendererConsole.hpp" +#include "rlutil.h" + +#include +#include + +const uint32_t STEPS = 1000000; +const uint32_t SLEEP_MS = 50; +const bool POPULATE_RAND = false; + +int main() +{ + std::uint8_t rows = static_cast(rlutil::trows()); + std::uint8_t cols = static_cast(rlutil::tcols()); + + LifeSimulator simulation(cols, rows); + if (!POPULATE_RAND) + { + std::uint8_t acornOffsetX = 40; + std::uint8_t acornOffsetY = 20; + + PatternGosperGliderGun patternGun; + // PatternAcorn patternAcorn; + if (cols > patternGun.getSizeX() && rows > patternGun.getSizeY()) + simulation.insertPattern(patternGun, 0, 0); + // if (cols > patternAcorn.getSizeX() + acornOffsetX && rows > patternAcorn.getSizeY() + acornOffsetY) + // simulation.insertPattern(patternAcorn, acornOffsetX, acornOffsetY); + } + else + { + PatternRandom patternRandom(cols, rows, 1); + simulation.insertPattern(patternRandom, 0, 0); + } + + RendererConsole renderer; + rlutil::cls(); + rlutil::saveDefaultColor(); + + for (std::uint32_t i = 0; i < STEPS; i++) + { + rlutil::hidecursor(); + + renderer.render(simulation); + simulation.update(); + if (SLEEP_MS > 0) + std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_MS)); + + rlutil::showcursor(); + } + + return 0; +} -- cgit v1.3