我正在制作一个迷宫游戏,它使用玩家结构并接受用户输入。程序运行,但当我输入命令来移动播放器时没有任何变化。关于出了什么问题的任何建议?
// The function for user input
void getMove()
{
Player player1;
cout << "nnWhich direction would you like to go? ----- Treasure: " << numTreasure << "nn";
cout << "Up: 8n";
cout << "Down: 2n";
cout << "Left: 4n";
cout << "Right: 6n";
cin >> direction;
switch(direction)
{
case 8 :
if (currentBoard[player1.playerX - 1][player1.playerY] != '#'){
player1.playerX--;
}
break;
case 2 :
if (currentBoard[player1.playerX + 1][player1.playerY] != '#'){
player1.playerX++;
break;
}
case 4 :
if (currentBoard[player1.playerX][player1.playerY - 1] != '#'){
player1.playerY--;
break;
}
case 6 :
if (currentBoard[player1.playerX][player1.playerY + 1] != '#'){
player1.playerY++;
break;
}
}
switch(currentBoard[player1.playerX][player1.playerY]){
case '*':
cout << "You picked up a gold nugget!" << endl;
board[player1.playerX][player1.playerY] = treasureSpace;
numTreasure++;
break;
}
}
'
使用 cin >>
读入的direction
变量的类型为 char*
。 在您的开关案例中,您将此direction
变量与整数进行比较,因此您将永远不会得到任何这些情况,并且您没有默认情况。 我会将从用户引入的direction
切换到具有类型转换的int
`int_direction = (int)direction`
然后更改开关大小写以与int_direction
进行比较