C 打印2D数组

C++ printing 2d array

本文关键字:数组 2D 打印      更新时间:2023-10-16

im试图在反对方面制作基于命令行的游戏,称为" dungeoncrawl" ...我创建了一个标题&源文件,然后我已声明了函数和类文件中的类,并且定义在源文件上。

问题:当我使用2用于循环的2打印板时,它在void函数中会打印一些随机整数,而不仅仅是0 ...

打印后的结果:

0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1303831201 100681557 
1606416496 32767 17 0 1 0 104 1 1606581343 32767 
1606416256 32767 1606423158 32767 1606416280 32767 1606416280 32767 1 0 
1606416304 32767 0 1 0 0 1606416320 32767 0 0 
0 0 0 0 0 0 0 0 1606416288 32767

这是标题文件:

#ifndef dungeoncrawl_hpp
#define dungeoncrawl_hpp
#include <iostream>
#include <stdio.h>
using namespace std;
class dungeoncrawl {
public:
    dungeoncrawl();
    void drawBoard();
    ~dungeoncrawl();
private:
    int board[10][10];
    uint8_t player_pos[0][0], enemy_pos[0][0];
};
#endif /* dungeoncrawl_hpp */

这是源文件:

#include "dungeoncrawl.hpp"
// Constructor
class dungeoncrawl::dungeoncrawl {
    int board[10][10] = {
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0}
    };
};
// Con-&-Destructor
dungeoncrawl::dungeoncrawl(){}
dungeoncrawl::~dungeoncrawl(){}
void dungeoncrawl::drawBoard(){
    for(int i = 0; i < 10; i++){
        for(int j = 0; j < 10; j++){
            cout << board[i][j] << " ";
        }
        cout << endl;
    }
};

您的代码中有两个错误。首先:

uint8_t player_pos[0][0], enemy_pos[0][0];

零长度阵列由GCC作为扩展名提供。在您的情况下是没有用的。

其次:

class dungeoncrawl::dungeoncrawl {

它不是约束器。如果要初始化类成员,则可以在构造函数中进行。例如这里:

// Constructor
dungeoncrawl::dungeoncrawl(){
    for(int i = 0; i < 10; i++){
        for(int j = 0; j < 10; j++){
            board[i][j] = 0;
        }
    }
}

或,例如,您可以将数组声明为静态:

//dungeoncrawl.hpp
private:        
     static int board[10][10];
//dungeoncrawl.cpp
int dungeoncrawl::board[10][10] = {
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0}
};