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
Block.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)); } } }
Le problème semble venir de cette ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); } }dans Block.cpp (quand je la met en commentaire et que je met une condition bidon pour mon switch, mon programme fonctionne correctement).
Code : Sélectionner tout - Visualiser dans une fenêtre à part char c = getMap()->getBlock(getPosition())
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 none : Sélectionner tout - Visualiser dans une fenêtre à part 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 ^^'
Partager