(1) Когда игрок выбирает Row / Col, необходимо убедиться, что в массиве в этом выделении есть символ '*' (т.е. еще не использованный). (2) Добавьте переменную int «выборки» и при любом действительном выборе увеличивайте ее на 1. Когда выбор достигает 9, доска заполнена. Таким образом, вам вообще не нужно noRepeat()
.
Функция noRepeat()
просто печатает, но возвращает void. Так в чем же смысл спрашивать if (noRepeat())
?
Функция switchPlayer()
ничего не делает. Например, этот ниже, если вы передаете «текущий игрок», возвращает другой: .. Использование: (1) Добавить переменную char currentPalayer = Player1;
и (2) currentPalayer = switchPlayer(currentPalayer);
, когда вы хотите переключить игрока , Используйте переменную currentPalayer
, когда Player1
и Player2
могут быть const char
из #define
char switchPlayer(char currentPlayer) {
const int K = Player1 + Player2;
return (char) (K - currentPlayer);
}
Я думаю, есть еще проблемы.
Кстати: урезать до 1/2 функции победителя ():
//conditional winner checker
char winner() {
if (board[0][0] == board[0][1] && board[0][1] == board[0][2])
return board[0][0];
if (board[1][0] == board[1][1] && board[1][1] == board[1][2])
return board[1][0];
if (board[2][0] == board[2][1] && board[2][1] ==board[2][2]))
return board[2][0];
if (board[0][0] == board[1][0] && board[1][0] == board[2][0])
return board[0][0] ;
if (board[0][1] == board[1][1] && board[1][1] == board[2][1])
return board[0][1];
if (board[0][2] == board[1][2] && board[1][2] == board[2][2])
return board[0][2];
if (board[0][0] == board[1][1] && board[1][1] == board[2][2])
return board[0][0];
if (board[2][0] == board[1][1] && board[1][1] == board[0][2])
return board[2][0];
}