Что не так с:
std::pair<int, int> BoardView::getNextMove()
{
std::cout << " Player " << (currStep & 2 == 0 ? 1 : 2) << ": ";
int tmp;
std::cin >> temp;
return std::pair<int, int>( tmp / 10, tmp % 10 );
}
void BoardView::startGame()
{
int currentStep = 0;
while ( myBoard->isWin() == none ) {
std::pair<int, int> move = getNextMove();
while ( ! myBoard->makeMove( move, (currentStep % 2 == 0 ? cross : zero) ) {
std::cout << "Wrong move! Try again" << std::endl;
move = getNextMove();
}
}
}
(хотя я бы предпочел явный класс для типа Move, а не
просто std::pair
. Члены row
и column
намного более явные
чем first
и second
.)
Обычно, если вас соблазняет goto
(или даже continue
или
break
), это признак того, что слишком много в одной функции.