Я работал над игрой в подземелья, и у меня возникла проблема с перемещением координат игрока по всему 2-му массиву. В настоящее время при выборе перемещения оно передается в функцию, но позиция не переназначается. Я попытался передать мою ссылку и по значению.
В настоящее время, как написано, программа заставляет игроков двигаться, но я не думаю, что это фактически передается в функцию updateMove. Я попытался использовать функцию cout << playerMove, но она ничего не показывает. Я делаю что-то, чтобы движение не передавалось в функцию updateMove? Я предполагаю, что именно поэтому движение не обновляется. </p>
Я добавил свой основной и рассматриваемую функцию:
int main()
{
// initialize random #
srand(static_cast<int>(time(NULL)));
do // play again loop
{
// define variables
bool win, lose;
char playerMove;
char dungeon[MAX_ROW][MAX_COL];
int cash;
displayInstructions(); // display instructions
initializeDungeon(dungeon); // initialize dungeon
do
{
setTraps(dungeon); // set traps
displayDungeon(dungeon); // display dungeon
playerMove = getMove(playerMove);
// check for valid move
// reassign player to new position
updateMove(playerMove, dungeon);
//update map now that move is legit
if (!win && !lose)
{
updateDungeon();
}
} while (!win && !lose);
} while (repeat());
}
void updateMove(char & playerMove, char dungeon[MAX_ROW][MAX_COL])
{
int px, py;
int dx = 0, dy = 0;
if(playerMove == UP && px != 0)
{
dx--;
}
else if (playerMove == DOWN && px != 7)
{
dx++;
}
else if (playerMove == LEFT && py != 0)
{
dy--;
}
else if (playerMove == RIGHT && py != 8)
{
dy++;
}
if(dx != 0 || dy != 0)
{
dungeon[px][py] = SPACE; // I updated this to be an 'empty' space based on my variables
px += dx;
py += dy;
dungeon[px][py] = PLAY;
}
} ````