#ifndef PLAYER_H
#define PLAYER_H

#include <memory>
#include <string>
#include "board.h"
#include "move.h"

class Player
{
public:
   explicit Player(Color c) : color(c) {}
   virtual ~Player() = default;

   virtual Move askForMove(const Board&) = 0;

   virtual std::string getName() const = 0;

protected:
   Color getColor() const { return color; }

private:
   const Color color;
};

using PlayerPtr = std::unique_ptr<Player>;

#endif
