[Projet Bomberman] Erreur inconnue ..
Bonsoir à tous.
On doit coder un bomberman pour un projet scolaire.
J'ai un problème de m**** qui me rend ouf, j'arrive pas à le résoudre. Mon programme se lance mais il plante direct (Bomberman.exe a cessé de fonctionner blabla blabla).
Je vous met les bouts de code où ça semble posé problème et je vous dis ensuite d'où ça viens plus précisément :
Map.cpp
Code:
1 2 3 4 5 6 7
| void Map::setBlocks() {
for(int i=0; i < NBR_BLOC_WIDTH; i++) {
for(int j=0; j < NBR_BLOC_HEIGHT; j++) {
blocks[i][j] = new Block(getThisMap(), Position(j,i));
}
}
} |
Block.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| Block::Block(Map* _map, Position _position) {
setMap(_map);
setEngine(getMap()->getEngine());
setPosition(_position);
setIsBonus((rand()%3)+1);
char c = getMap()->getBlock(getPosition());
switch(c) {
case '#':
setBlockType(bWall);
setBlockSurface(getEngine()->loadImg("image/map/border.gif"));
break;
case ' ':
setBlockType(bFloor);
setBlockSurface(getEngine()->loadImg("image/map/passable.gif"));
break;
case 'D':
setBlockType(bDestructible);
setBlockSurface(getEngine()->loadImg("image/map/destructible.gif"));
break;
case 'I':
setBlockType(bIndestructible);
setBlockSurface(getEngine()->loadImg("image/map/indestructible.gif"));
break;
default:
setBlockType(bNone);
break;
}
if (getIsBonus()==1 && getPosition().getX()>=0 && getPosition().getX()<getMap()->getDimX() && getPosition().getY()>=0
&& getPosition().getY()<getMap()->getDimY() && getBlockType()==bDestructible) {
setBonus(new Bonus(this));
} else {
setBonus(new Bonus());
}
} |
Le problème semble venir de cette ligne
Code:
char c = getMap()->getBlock(getPosition())
dans Block.cpp (quand je la met en commentaire et que je met une condition bidon pour mon switch, mon programme fonctionne correctement).
Dans mon main j'ai fais quelque test pour voir si mon tableau de block s'initialise bien, pas de soucis de ce coté, d'ailleurs j'arrive à récupérer leurs position, et j'arrive bien à utiliser la méthode
Code:
map.getBlock(map.getBlocks()[i][j]->getPosition())
Quand j'utilise le déboggeur, j'ai l'impression que mon programme plante dès qu'on arrive au valeur i=1 et j=0 (dans mon Map.cpp, méthode setBlocks())
Voilà voilà, merci d'avance a ceux qui essayeront de m'aider ^^'