所以我正在尝试制作一个地下城爬行游戏(基本上是10x10地图),当我创建地图(棋盘)并更改一个元素时,我更新它时不会打印。我没有看到我的代码有任何问题,我无处可去:(
#include <iostream>
#include "ChadDung.h"
using namespace std;
int createBoard();
int updateBoard();
int clear();
char board[10][10];
int xp = 10;
int yp = 4;
int main() {
createBoard();
board[xp][yp] = 'G';
clear();
updateBoard();
}
int createBoard(){
for (int x = 0; x < 10; x++){
for (int y = 0; y < 10; y++){
board[x][y] = '.';
cout << board[x][y];
}
cout << endl;
}
}
int updateBoard(){
for (int x = 0; x < 10; x++){
for (int y = 0; y < 10; y++){
cout << board[x][y];
}
cout << endl;
}
}
int clear(){
cout << string( 25, '\n' );
}
底行应该有一个'G',但它只显示“..........”
答案 0 :(得分:5)
char board[10][10];
xp = 10;
board[xp][yp] = 'G';
当您设置&#34; G&#34;时,您已经运行了数组的末尾(有效索引为0-9),因此您将获得未定义的行为。
答案 1 :(得分:2)
您正在添加&#39; G&#39;在数组中的错误位置。你走出了极限。您的数组从[0] [0]到[9] [9]不等。
答案 2 :(得分:2)
首先,我尝试了你的代码并得到错误,因为你的函数没有返回一个值(你声明它们返回一个int)所以改变那些返回void。然后,为了回答你的问题,你没有看到&#39; G&#39;是因为 xp的值是10,这超出了网格的范围。请记住,在代码中,一般来说,事情是从0开始的,所以插槽1-10实际上称为插槽0-9。所以我将sp = 10改为xp = 9,你的&#39; G&#39;显得像一个魅力。
#include <iostream>
void createBoard();
void updateBoard();
void clear();
using namespace std;
void createBoard();
void updateBoard();
void clear();
char board[10][10];
int xp = 9;
int yp = 4;
int main() {
createBoard();
board[xp][yp] = 'G';
clear();
updateBoard();
}
void createBoard() {
for (int x = 0; x < 10; x++){
for (int y = 0; y < 10; y++){
board[x][y] = '.';
cout << board[x][y];
}
cout << endl;
}
}
void updateBoard(){
for (int x = 0; x < 10; x++){
for (int y = 0; y < 10; y++){
cout << board[x][y];
}
cout << endl;
}
}
void clear(){
cout << string( 25, '\n' );
}