どのように別の関数win
内のローカル変数treasureX
を使用するには? win
関数では、プログラムはboard[6][t]
で動作しますが、treasureX
では動作しません。 treasureX
変数はグローバルですが、コードは意図したとおりに機能しません。ここでC++の別の関数でローカル変数を使用するには?
#include <iostream>
#include <random>
#include <ctime>
char board[8][8];
char treasureX;
int t;
void Board() {
for (int x = 1; x < 7; x++) {
for (int y = 1; y < 7; y++) {
board[x][y] = '.';
}
}
}
void treasureSpawn() {
t = rand() % 6 + 1;
board[6][t] = 'X';
treasureX = board[6][t];
}
int displayBoard() {
for (int x = 0; x<8; x++) {
for (int y = 0; y<8; y++) {
std::cout << board[x][y];
if (y == 7) {
std::cout << std::endl;
}
}
}
return 0;
}
char playerPosition;
char playerSpawn() {
int randomY;
randomY = rand() % 6 + 1;
board[1][randomY] = 'G';
playerPosition = board[1][randomY];
return playerPosition;
}
int movement() {
char move;
std::cout << "Use WASD keys to move." << std::endl;
std::cin >> move;
for (int x = 1; x<7; x++) {
for (int y = 0; y<8; y++) {
if (board[x][y] == 'G') {
board[x][y] = '.';
if (move == 'W' || move == 'w') {
return board[x - 1][y] = 'G';
}
else if (move == 'A' || move == 'a') {
return board[x][y - 1] = 'G';
}
else if (move == 'D' || move == 'd') {
return board[x][y + 1] = 'G';
}
else if (move == 'S' || move == 's') {
return board[x + 1][y] = 'G';
}
else {
std::cout << "Wrong key!" << std::endl;
movement();
}
}
}
}
return 0;
}
int win() {
if (treasureX == 'G') { // when player arrives at 'X' this function does not execute. Works if I put 'board[6][t]' instead of 'treasureX'.
std::cout << "You win" << std::endl;
return 0;
}
}
int main() {
srand(time(0));
Board();
playerSpawn();
outOfBounds();
treasureSpawn();
displayBoard();
do {
movement();
checkIf();
displayBoard();
} while (win() != 0);
}
'treasureX'はローカル変数ではありません。これはグローバル変数です。 – cdhowie
グローバル変数は使用しないでください。あるクラスでそれを持つことができ、他の場所からのゲッターを使ってアクセスすることができます。 –
私はスペア・ミーです。私はC++を使っていて、私は自分の記憶に挑戦しようとしています。 –