// n  -1    col   row
// 1   0     0     0
// 2   1     1     0
// 3   2     2     0
// 4   3     0     1
// 5   4     1     1
// 6   5     2     1
// 7   6     0     2
// 8   7     1     2
// 9   8     2     2

#include <iostream>
#include <limits>
#include "color.h"
#include "human.h"
using namespace std;

Move Human::askForMove(const Board& board)
{
   for (;;)
   {
      cout << "Bitte Zug eingeben (1..9): ";
      int n;
      cin >> n;
      if (cin.fail())
      {
         cout << "- Bitte Zahl eingeben\n\n";
         cin.clear();
         cin.ignore(numeric_limits<streamsize>::max(), '\n');
         continue;
      }
      if (n < 1 || n > 9)
      {
         cout << "- Bitte Zahl von 1..9 eingeben\n\n";
         continue;
      }
      const int col = (n - 1) % 3;
      const int row = (n - 1) / 3;
      if (board.isFree(col, row))
      {
         cout << '\n';
         return { col, row, getColor() };
      }
      cout << "- Bitte nur freie Felder eingeben\n\n";
   }
}
