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/RendererConsole.cpp | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Homework/cs3460/gameoflife/RendererConsole.cpp (limited to 'Homework/cs3460/gameoflife/RendererConsole.cpp') diff --git a/Homework/cs3460/gameoflife/RendererConsole.cpp b/Homework/cs3460/gameoflife/RendererConsole.cpp new file mode 100644 index 0000000..76e3d49 --- /dev/null +++ b/Homework/cs3460/gameoflife/RendererConsole.cpp @@ -0,0 +1,31 @@ +#include "RendererConsole.hpp" + +void RendererConsole::render(const LifeSimulator& simulation) +{ + for (uint8_t y = 0; y < simulation.getSizeY(); ++y) + for (uint8_t x = 0; x < simulation.getSizeX(); ++x) + { + bool alive = simulation.getCell(x, y); + auto coord = std::pair(x, y); + + rlutil::resetColor(); + rlutil::locate(x + 1, y + 1); + + if (!alive && m_previouslyAliveLength.contains(coord) && m_previouslyAliveLength[coord] >= RendererConsole::MAX_ALIVE) + { + rlutil::setChar(' '); + m_previouslyAliveLength.erase(coord); + continue; + } + else if (alive) + m_previouslyAliveLength[coord] = 0; + if (m_previouslyAliveLength.contains(coord)) + { + auto colorChar = RendererConsole::PRINT_PER_LIFESPAN[m_previouslyAliveLength[coord]]; + rlutil::setColor(colorChar.second); + rlutil::setChar(colorChar.first); + + m_previouslyAliveLength[coord]++; + } + } +} -- cgit v1.3