//=============================================================================

#include <iostream>
#include "board.h"
#include "move.h"
#include "player.h"
#include "player-choice.h"
using namespace std;

//-----------------------------------------------------------------------------

bool play(Board& board, Player& player)
{
   // 3. Spieler: Welchen Zug willst du machen? Zug ausgeben
   Move move = player.nextMove(board);
   move.print();

   // 4. Setze Zug, und Ausgabe Spielbrett
   board.set(move);
   board.print();

   // 5. Hat Spieler gewonnen
   if (board.hasWin(move.getColor()))
   {
      cout << player.getName() << " hat gewonnen\n";
      return true;
   }

   // 6. Remis?
   if (board.isFull())
   {
      cout << "Remis, keiner hat gewonnen\n";
      return true;
   }
   return false;
}

//-----------------------------------------------------------------------------

int main()
{
   cout << "Tic-Tac-Toe\n\n";

   // 0. Spieler erzeugen
   auto player1 = playerChoice("1.", Color::white);
   auto player2 = playerChoice("2.", Color::black);

   // 1. Spielbrett
   Board board;

   // 2. Ausgabe
   board.print();
   
   for (;;)
   {
      if (play(board, *player1)) break;
      if (play(board, *player2)) break;
   }
}
