如何使用结构在 2d 数组中移动玩家对象



我正在制作一个迷宫游戏,它使用玩家结构并接受用户输入。程序运行,但当我输入命令来移动播放器时没有任何变化。关于出了什么问题的任何建议?

// 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进行比较

最新更新