Я делаю домашнее задание для UNI, и я должен сделать крестики-нолики без какого-либо решения игрока, все ходы выбираются случайным образом. Таким образом, если символ в матрице « », это означает, что он свободен, а если это «X» или «O», он должен генерировать другой ход. Это код (язык C):
if (playerTurn == 1){
playerSymb = 'X';
}
else if (playerTurn == 2){
playerSymb = 'O';
}
if (matrix[rand1][rand2] == ' '){
matrix[rand1][rand2] = playerSymb;
} else if(matrix[rand1][rand2] == 'X' || matrix[rand1][rand2] == 'O'){
do{
randAlt1 = MINRND + rand()%(MAXRND - MINRND +1);
randAlt2 = MINRND + rand()%(MAXRND - MINRND +1);
}while (matrix[randAlt1][randAlt2] != 'X' && matrix[randAlt1][randAlt2] != 'O');
matrix[randAlt1][randAlt2] = playerSymb;
}
Я не копировал весь код, потому что он вообще не закончен, мне просто нужна помощь в решении этого. Но если я попытаюсь запустить это, символы могут быть перезаписаны, например, если у меня есть «X» на matrix[1][2]
, возможно, что через несколько ходов это будет «O». Итак, как я могу сделать так, чтобы ходы не перезаписывались? (Извините за плохой английский).
while
должен проверить на!= ' '
- person Paul Ogilvie   schedule 17.11.2015matrix[randAlt1][randAlt2] != 'X' && matrix[randAlt1][randAlt2] != 'O'
Это условие неверно. - person Kotshi   schedule 17.11.2015