diff options
| author | Elizabeth Alexander Hunt <me@liz.coffee> | 2026-07-02 11:55:17 -0700 |
|---|---|---|
| committer | Elizabeth Alexander Hunt <me@liz.coffee> | 2026-07-02 11:55:17 -0700 |
| commit | 6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6 (patch) | |
| tree | ed97e39ec77c5231ffd2c394493e68d00ddac5a4 /Homework/cs3460/gameoflife/main.cpp | |
| download | misc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.tar.gz misc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.zip | |
Diffstat (limited to 'Homework/cs3460/gameoflife/main.cpp')
| -rw-r--r-- | Homework/cs3460/gameoflife/main.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
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 <cstdint>
+#include <thread>
+
+const uint32_t STEPS = 1000000;
+const uint32_t SLEEP_MS = 50;
+const bool POPULATE_RAND = false;
+
+int main()
+{
+ std::uint8_t rows = static_cast<std::uint8_t>(rlutil::trows());
+ std::uint8_t cols = static_cast<std::uint8_t>(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;
+}
|
