Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: collision et destruction  (Lu 2143 fois)

0 Membres et 1 Invité sur ce sujet

grinds

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
collision et destruction
« le: Avril 25, 2016, 11:36:19 am »
Bonjour je suis en pleine création d'un petit jeux personnel mettant en scène mario et je suis confronté a un petit problème:
mon mario et son ennemi ont une collision , mario perd donc 2 point de vie et l'objet se detruit(l'image de l'objet disparait) mais si mario reste sur le rectangle de construction où mon ennemi est mort il continu a perdre continuellement des pv(2 par 2), j'aimerais savoir pourquoi , je precise que tout se passe dans une classe IHM et que mario et l'ennemi sont des compositions de mon IHM.
voici les codes de mon problème.
cordialement

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : collision et destruction
« Réponse #1 le: Avril 25, 2016, 11:50:48 am »
Salut

1. Merci de poster sur le bon forum à l'avenir

2. Poste ton code sous forme textuelle, pas sous forme d'images

3. Pour ton problème : appeler un destructeur n'a jamais détruit un objet en C++ -- d'ailleurs on n'appelle jamais un destructeur
Laurent Gomila - SFML developer

grinds

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : collision et destruction
« Réponse #2 le: Avril 25, 2016, 12:15:48 pm »
merci de me répondre si vite:
1-Désolé de m’être trompé de post sur le forum je pensais être sur la bonne catégorie je vérifierai a l'avenir
2-Je le transférerai par forme textuel a l'avenir aussi ce seras plus simple pour moi et pour vous si j'ai bien compris
3-Autant pour moi je pensais que cela pouvais s'utiliser, auriez-vous un moyen de faire ?
j'avais penser a changer le rectangle de position instantanément après la collision
ou encore utiliser un boll et bloqué la perte de vie après la collision mais je trouve ces deux technique plutôt moyenne donc j'aimerai une explication s'il vous plait, cordialement.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : collision et destruction
« Réponse #3 le: Avril 25, 2016, 12:34:03 pm »
Citer
1-Désolé de m’être trompé de post sur le forum je pensais être sur la bonne catégorie je vérifierai a l'avenir
Désolé pour le hors-sujet, mais je suis vraiment curieux : qu'est-ce qui t'a fait penser que ton problème avait un rapport avec le module système de SFML (le truc qui contient clock, thread, ...) ? ;D

Citer
2-Je le transférerai par forme textuel a l'avenir aussi ce seras plus simple pour moi et pour vous si j'ai bien compris
Plus simple pour toi en effet, plus rapide à afficher pour le forum, indexable par les moteurs de recherche, copiable/collable par nous, etc.

Citer
j'avais penser a changer le rectangle de position instantanément après la collision
ou encore utiliser un boll et bloqué la perte de vie après la collision mais je trouve ces deux technique plutôt moyenne donc j'aimerai une explication s'il vous plait, cordialement.
Si ton ennemi doit mourir alors détruit l'instance correspondante. Si elle se trouve dans un conteneur quelconque (j'imagine que tu as plus d'un ennemi dans le jeu ??) alors retire-la de ce conteneur, si elle est alloué dynamiquement alors détruit-la (delete), etc. A ce niveau c'est à toi de voir, ça dépend totalement de la manière dont tu gères la logique de ton jeu, ce n'est pas un problème technique.

Et de manière générale, attaquer un jeu sans avoir les bases en C++ peut s'avérer très difficile ;)
Laurent Gomila - SFML developer

grinds

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : collision et destruction
« Réponse #4 le: Avril 25, 2016, 01:20:26 pm »
1-question légitime et réponse un peu moin: j'en sais rien  ;D
2-je trouver ça sympas les images
3-j'ai des bases simple en c++ et même si j'ai eu plusieurs problème j'ai déjà bien progresser en progra grâce a ce mini projet :D, par contre je ne sais pas ce qu'est un conteneur , je ne sais pas non plus comment je vais crée ma multitude d'ennemi, sinon pour l'objet de mon post j'ai remplacer mon horreur de tentative d'appel de destructeur par un delete de l'objet qui m'affiche une belle erreur a la collision :

 "Exception levée à 0x0FC10337 (sfml-graphics-d-2.dll) dans marioprojet.exe : 0xC0000005 : Violation d'accès lors de la lecture de l'emplacement 0xDDDDDDE1.
S'il existe un gestionnaire pour cette exception, le programme peut continuer en toute sécurité."

je pense que je vais devoir revoir ma vision pour mes objets ennemi, pourrais tu m'indiquer comment je doit procéder pour crée plusieurs ennemi au fils du temps et les "détruire" quand un ennemi touche mario ou sors de mon terrain, si tu le peux bien sur.
cordialement

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : collision et destruction
« Réponse #5 le: Avril 25, 2016, 01:25:21 pm »
Quelques pistes, à toi de les creuser pour savoir quoi faire de tout ça :

std::vector<std::unique_ptr<Enemy>> enemies;
ennemies.emplace_back(new Enemy(...));

...

for (auto it = enemies.begin(); it != enemies.end(); )
{
    if (collision(mario, *it))
        it = enemies.erase(it);
    else
        ++it;
}

...

for (auto& enemy : enemies)
    window.draw(*enemy);
Laurent Gomila - SFML developer