#pragma once #include #include #include #include #include "Robot.h" #include "Timer.h" #include "World.h" /* Coordinates game setup, turn order, world updates, and final scoring output. */ class Game { public: Game (); void run (); private: World world_; std::vector> robots_; std::vector deadRobotScores_; std::mutex turnMutex_; int lastThreshold_ = 0; int round = 0; std::vector threadTimes_; void setup (); void robotLoop ( int idx ); void fightNearby ( Robot &robot ); int computeWorldSum () const; bool isGameOver () const; void log ( const std::string &message ) const; void checkRearrange ( Robot &robot ); void applyEffect ( Robot &robot, int effect ); void printScores () const; void printResults () const; std::unique_ptr createRobot ( int choice, int x, int y ) const; };