-2
對不起,這個問題的措辭不是很好,我不完全確定如何問它。循環陣列,向上和向左的方向工作,向下和向右的方向返回錯誤?
此語句可以正常工作
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時,期待從board [i - 1] [j]得到什麼?當我行1時,與董事會[i + 1] [j]同樣行使職權? – willll
Off topic:在'direction'上使用'std :: tolower'並且保存自己不得不測試'direction =='S'',並且它是上層的cronys。 – user4581301
'_getch'具有Visual Studio的自我簽名。 Visual Studio有一個出色的調試器。如果你學會使用它,你的生產力將會顯着提高。閱讀更多:https://msdn.microsoft.com/en-CA/library/sc65sadd.aspx – user4581301