为什么我的数组没有更新?

时间:2015-04-30 00:22:11

标签: c++

所以我正在尝试制作一个地下城爬行游戏(基本上是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',但它只显示“..........”

3 个答案:

答案 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' );
}