Привет,
Со времени моего последнего вопроса о C ++ я действительно выучил довольно много.Теперь я чувствую себя комфортно с классами, но пока не очень удобен с указателями и ссылками.
Пожалуйста, обратите внимание, я не прошу вас ни разу, чтобы решить мою проблему, я спрашиваю, почему я не получаю желаемый результат.
Вот некоторые фрагменты кода, которые должны помочь мне объяснить проблему: Я делаю консольную игру в крестики-нолики (недавно начал изучать C ++, этот imo - хороший способ для этого)
main.cpp:
//Here I initalise 1 variable and an array
int move;
char board[9] = {' ',' ',' ',' ',' ',' ',' ',' ',' '};
Первый вопрос: есть ли лучший способ определить пустые места в массиве символов?Причина, по которой я так поступаю, заключается в том, что я хочу, чтобы на моей плате tictactoe было пустое место, когда X или O еще не установлены.
main.cpp:
if(referee.validateMove(board, move))
{
board[move] = player2.getToken();
displayBoard(board);
}
То, что здесь происходит, легко понять, но я все равно объясню;
Вызов метода validateMove от объекта-рефери сделан, и передано 2 параметра, ход, который выбрал игрок (между 0-8).и тиктактое табло.
Referee.cpp
bool Referee::validateMove(const char (&board)[9], int& move)
{
if(board[move] != 'X' || 'O')
{
return true;
}
else
{
return false;
}
}
Вот где главная проблема, и возникает мой последний вопрос.Как было показано ранее, я передал массив символов размером 9.
Ссылка на переменную перемещения работает хорошо (я должен использовать ссылку или указатель?), И она содержит желаемый результат.
В этот момент, скажем, игрок 1 только что сделал свой ход и поместил токен в позицию 2. Теперь я хочу поместить свой токен в качестве ИГРОКА 2 в позицию 2
Когда я отлаживаю в Visual Studio, я получаюследующее:
0x0024faa8 " O ÌÌÌÌÌÌÌÌÌÌÌ"
Это когда я держу мышь на параметре платы.Таким образом, доска знает, что она занята.
Почему, однако, метод validateMove всегда возвращает true, и доска [перемещение] никогда не равна O или X?
Спасибо, что взяливремя прочитать мою проблему.Если у вас есть вопрос или я что-то объяснил по глупости, вы видите недействительные соглашения об именах, пожалуйста, сообщите мне.Я студент, и я хочу забрать как можно больше.
Эта проблема решена.Спасибо за тех, кто ответил.Высоко ценю это.