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

#include <iostream>
#include "board.h"
#include "computer.h"
#include "human.h"
#include "move.h"
using namespace std;

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

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

   // 1. Spielbrett
   Board board;

   // 2. Ausgabe
   board.print();
   
   for (;;)
   {
      // 3. Mensch: Welchen Zug willst du machen? Zug ausgeben
      Move move = Human::nextMove(board);
      move.print();

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

      // 5. Hat Mensch gewonnen
      if (board.hasWin(move.getColor()))
      {
         cout << "Mensch hat gewonnen\n";
         return 0;
      }

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

      // 7. Computer: Welchen Zug willst du machen? Zug ausgeben
      move = Computer::nextMove(board);
      move.print();

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

      // 9. Hat Computer gewonnen
      if (board.hasWin(move.getColor()))
      {
         cout << "Computer hat gewonnen\n";
         return 0;
      }

      // 10. Remis? ---
      // 11. Gehe zu 3.
   }
}
