diff --git a/lib/Canvas.cpp b/lib/Canvas.cpp index 48acf3d..fe03204 100644 --- a/lib/Canvas.cpp +++ b/lib/Canvas.cpp @@ -26,10 +26,9 @@ void Canvas::update(const Game & game) { renderSuperPellets(game.superPellets); renderPacMan(game.pacMan); - renderGhost(game.blinky); - renderGhost(game.speedy); - renderGhost(game.inky); - renderGhost(game.clyde); + std::apply([&](const auto&... ghost) { + (renderGhost(ghost),...); + }, game.ghosts); renderScore(game.score.points); renderLives(game.score.lives); diff --git a/lib/Game.cpp b/lib/Game.cpp index a44d521..b8222d3 100644 --- a/lib/Game.cpp +++ b/lib/Game.cpp @@ -11,13 +11,11 @@ Game::Game() : pacMan(board), pellets(board), superPellets(board), - blinky(board), - speedy(board), - inky(board), - clyde(board) { + ghosts(Blinky(board), Speedy(board), Inky(board), Clyde(board)) { score.lives = DEFAULT_LIVES; } + auto Game::now() { return std::chrono::system_clock::now(); } @@ -52,10 +50,9 @@ void Game::run() { void Game::step(std::chrono::milliseconds delta, InputState inputState) { pacMan.update(delta, inputState, board); - blinky.update(delta, board); - speedy.update(delta, board); - inky.update(delta, board); - clyde.update(delta, board); + std::apply([&](auto &... ghost) { + (ghost.update(delta, board),...); + }, ghosts); eatPellets(); } diff --git a/lib/Game.hpp b/lib/Game.hpp index 88d8adc..d486736 100644 --- a/lib/Game.hpp +++ b/lib/Game.hpp @@ -23,10 +23,7 @@ private: PacMan pacMan; Pellets pellets; SuperPellets superPellets; - Blinky blinky; - Speedy speedy; - Inky inky; - Clyde clyde; + std::tuple ghosts; Score score; void step(std::chrono::milliseconds delta, InputState inputState);