Im dieses Commandline-basierten Spiel zu machen versucht, genannt „Dungeoncrawl“ in ObjectOrientedProgramming ... Ich habe eine Header & Quelldatei erstellt, dann habe ich erklärte Funktionen und die Klasse in Header-Datei, und Definitionen sind auf die Quelldatei.C++ Druck 2d Array
Das Problem: Wenn ich das Board mit 2 for-Schleifen in einer Void-Funktion drucken, druckt es einige zufällige ganze Zahlen statt nur 0'en ...
Ergebnis nach dem Druck:
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
Diese Datei ist der Header:
#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 */
und hier ist die Quelldatei:
#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;
}
};
'int board [10] [10]', die Sie deklariert und initialisiert in 'dungeoncrawl' Konstruktor eine lokale Variable, die völlig unabhängig von der Variablen dieses This-board-Members ist, die selbst nie initialisiert wird und zufälligen Müll enthält. –
Sie überschatten Ihre eigene Variable und versäumen, die echte Variable zu initialisieren. Wenn Sie einen einfachen "std :: vector" mit 100 Elementen verwenden würden, wäre Ihr Code viel mehr C++ und Sie könnten tatsächlich eine kostenlose Initialisierung erhalten. – tadman
'// Constructor'' class dungeoncrawl :: dungeoncrawl' - Nein, das glaube ich nicht. – IInspectable