Bonjour tous le monde,
J'aimerai créer un BomberMan en C++ (pour le fun) et pour l'instant tout marche bien.
J'arrive a la gestion des bombes et lorsque le joueur appuie sur la touche pour poser la bombe, ma variable-tableau (comme celle du sokoban) change bien de valeur mais lors du blit les bombes ne s'affiche pas (j'ai essayer de les charger au départ de la map et la ça marche, donc c'est pas un problème d'image non trouvé).
voila le passage qui plante (j'utilise la SDL avec la POO) :
void Game::DisplayMap()
{
for(int i = 0; i < LARGEUR; i++)
{
for(int j = 0; j < HAUTEUR; j++)
{
map_pos.x = (i * CASE);
map_pos.y = (j * CASE);
switch(m_Map[i][j])
{
//Blitte de la map case par case
case BLOC:
m_SDL.BlitSurface(m_blocs[BLOC], &map_pos);
break;
case BRIQUE:
m_SDL.BlitSurface(m_blocs[BRIQUE], &map_pos);
break;
case BOMB:
m_SDL.BlitSurface(m_blocs[BOMB], &map_pos);
break;
default:
break;
}
}
}
}
et j'appelle la fonction dans la classe Game avec :
Je ne vois pas d'où vient le problème, mais petite information : tu n'es pas obligé de mettre this->DisplayMap();. DisplayMap(); tout court est siffisant !
La fonction SetBomb()
(les commentaires et le cout sont le pour le debug)
La valeur de m_Map est bien changer au bon endroit c'est juste au moment du blit
void Player::SetBomb()
{
//Pour mettre la bombe sous les pieds
x = (pos.x+(m_player[0][0]->w/2))/CASE;
y = (pos.y+(m_player[0][0]->h/2))/CASE;
if(m_Map[x][y] == VIDE)
{
if(nb_set_bombs < 9 && nb_set_bombs < nb_bombs)
{
cout << "Bombes ajouté" << endl;
m_Map[x][y] = BOMB;
this->DisplayMap();
/*cout << "This->[" << x << "][" << y << "]" << endl;
for(int i = 0; i < LARGEUR; i++)
{
for(int j = 0; j < HAUTEUR; j++)
{
cout << "["<<i<< "]["<<j<<"]=>"<<m_Map[i][j]<<endl;
}
}//*/
nb_set_bombs++;
}
}
this->Check();
}
ouais, je trouve normal!
sinon je trouve que tu n'as pas totalemnt orienté OO application, la preuve, tu passe la position a l'objet alors qu'il doit le seul a la connaitre(bref en private ou en protected)!
non elle ne parvient pas de la. sinon pour que la classe fasse les calculs, je crois que c'est ça le coeur de l'OO. elle doit encapsuler sa position, non?
voila ce queje te propose : chaque fois que tu affiche un objet : tu écris dans un fichier texte un truc du genre "BLIT BOMBE x=10; y=15". Comme ca tu verra si l'appel au blit est bien effecetué.
Si c'est le cas je te soupsonne de faire ca :
1) afficher les bombes
2) afficher le décors
3) afficher le personnage
"Ça me permet d'accéder au paramètre du jeu (events, l'objet SDL, les images des blocs, et plus tard les niveaux et bonus)"
tu te trompe. L'heritage permet certes d'heriter des parametres, mais des instances DIFFERENTES !!!
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
* Un wrapper C++ pour sqlite * Une alternative a boost units