对不起,这个问题的措辞不是很好,我不确定如何提问。
此声明可正常使用
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 + 1]部分有关,就像它改为[i-1]一样;像之前的if语句一样
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();
}
}
}
}
}
答案 0 :(得分:0)
最安全的解决方案是在使用之前测试数组表达式:
if (i > 0)
{
if (board[i-1][j] /*... */
and
if ((i + 1) < rows)
{
if (board[i+1][j] /* ... */
这应该说明您在代码中看到问题的原因。