Files
deepMiner/include/Game.h
T

40 lines
960 B
C++

#pragma once
#include <memory>
#include <mutex>
#include <string>
#include <vector>
#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<std::unique_ptr<Robot>> robots_;
std::vector<int> deadRobotScores_;
std::mutex turnMutex_;
int lastThreshold_ = 0;
int round = 0;
std::vector<Timer::Duration> 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<Robot> createRobot ( int choice, int x, int y ) const;
};