Извините, этот вопрос не сформулирован очень хорошо, я не совсем уверен, как его спросить.Цитирование через массивы, вверх и влево, работа в направлении вниз и вправо, возвращающая ошибку?
Это утверждение корректно работает
if (direction == 'w' || direction == 'W')
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
if (board[i][j] == playerTile)
{
if (board[i-1][j] == ' ')
{
board[i - 1][j] = playerTile;
board[i][j] = ' ';
}
else
{
std::cout << "Invalid Move" << std::endl;
_getch();
}
}
}
}
}
в то время как это один вызывает недопустимую ошибку, и игрок перемещается в нижнюю части доски, я думаю, что это проблема связана с [+-I] разделом, в когда он изменился на [i - 1]; как предыдущие, если заявление он работает
else if (direction == 's' || direction == 'S')
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
if (board[i][j] == playerTile)
{
if (board[i + 1][j] == ' ')
{
board[i + 1][j] = playerTile;
board[i][j] = ' ';
}
else
{
std::cout << "Invalid Move" << std::endl;
_getch();
}
}
}
}
}
Подумайте об этом, что ожидает от доски [i - 1] [j], когда i == 0? То же упражнение с доской [i + 1] [j], когда i rows-1? – willll
Off topic: используйте 'std :: tolower' на' направлении' и спасите себя, чтобы проверить 'направление == 'S'', и это верхние cronys. – user4581301
'_getch' имеет подпись эго Visual Studio. В Visual Studio есть отличный отладчик. Ваша производительность значительно улучшится, если вы научитесь ее использовать. Подробнее читайте здесь: https://msdn.microsoft.com/en-CA/library/sc65sadd.aspx – user4581301