Votre question

pb code c++ jeu pacman

Tags :
  • Jeux
Dernière réponse : dans Programmation
25 Mai 2013 23:47:49

Bonsoir,

j'ai quelques petits soucis sur mon pacman, et un peu d'aide sera la bienvenue^^
J'ai un niveau basique, j'ai donc quelques pb à construire le code source de ce programme qui est assez complexe:

1)mon 1er pb est la direction du fantôme: il part dans toutes les directions, mais dès que le chiffre tiré au hasard indique la direction d'un mur, il reste bloqué et refuse de tirer au hasard un autre chiffre afin de changer de direction. De plus, j'aimerais qu'il ne reparte pas dans la direction d'où il vient, afin de ne pas rester dans les mêmes zones.
code:

  1. /******************************************************************************************************************
  2. choix d'une direction aleatoire
  3. ******************************************************************************************************************/
  4.  
  5. void direction_choisi()
  6. {
  7. int poursuivre=1;
  8. int nombre_aleatoire;
  9.  
  10. {
  11. int rand (void);
  12. int nombre_aleatoire = 0;
  13. srand(time(NULL)); // initialisation de rand //S
  14. }
  15. while (poursuivre==1)
  16. {
  17. nombre_aleatoire=rand()%4;
  18. if (tab_carrefour[FANTOME_R_etat.noeud_origine].tab_directions[nombre_aleatoire]!=0);
  19. {
  20. poursuivre=0;
  21. FANTOME_R_etat.direction= nombre_aleatoire;
  22. }
  23. //while (poursuivre==0);
  24. {
  25. nombre_aleatoire=rand()%4;
  26. //FANTOME_R_etat.direction= nombre_aleatoire;
  27. }
  28. }
  29. }

2) le pb n°2 est le déplacement à travers le tunnel de gauche à droite: je n'ai actuellement aucune idée de comment faire pour que pacman et le fantôme passe par le tunnel instantanément car pour le moment ils traversent toute la carte jusqu'au point d'arrivée en traversant tous les murs. Les déplacements se passent entre noeud, un noeud représentant un croisement (ils sont numérotés). Il faut qu'ils puissent passer d'un noeud x à un noeud y instantanément sans qu'il y est de trace de leurs passages (disparitions de murs...)
J'avais pensé à ne pas utiliser l'image du fantôme et du pacman lors du passage afin que la carte reste intacte, mais je ne sais pas comment le coder.

3)Le dernier pb est la fin de partie: je ne sais pas comment coder la mort du pacman lors du contact entre le pacman et le fantôme.

Merci d'avance, toute trace de solution me sera utile.

Bonne soirée

Autres pages sur : code jeu pacman

26 Mai 2013 09:17:15

Bonjour,

d’après ce que j'ai compris en tu fais en sorte que t'es "mob" ce place de "noeud" en "noeud"... donc j'extrapole que chaque nœud a 4 possibilité de sortie !
humm c'est une bonne approche ( apres voir si c'est la meilleur je ne sais pas )...

Pour le problème numéro 1 , faudrait voir ce que tu a comme renseignement sur "un noeud" ... dans l'ideal il serais bon d'avoir un tableau des sortie possible pour chaque "noeud" quand ton "mob" arrive a un noeud tu rand sur les sortie possible, si c'est de la ou tu viens tu rerand ... ( un petit do while quoi ! )

Pour le problème numéro 2, comme ça la , je ne peut pas trop t'aider sans voir plus de code ... mais vue que ce "tunnel" est unique pourquoi ne pas lui associer du code unique ? quand tu arrive , tu est automatiquement TP de l'autre coter, tu change violament les donner de position dans ton code, je ne vois pas le problème !

Et pour le problème numéro 3, si tu possède un point de repère pour chaque "objet", vue que la taille des mob reste fixe, tu peut facilement crée une hitbox et détecter quand 2 hitbox rentre en contact

Voila un extrer de code (d'un Frogger coder en JavaScript, du coup la ya que la constante Y mais bon c'est le même principe pour la constante X
  1. function ColisionMerReelHitBox(Yfrog, Yrondin) {
  2. // on adapte la hitbox des sprites afin d'avoir un rendu de collision plus ou moins realiste !
  3. var F_Yg = Yfrog + 9;
  4. var F_Yd = Yfrog + 43;
  5. var R_Yg = Yrondin + 3;
  6. var R_Yd = Yrondin + 147;
  7. // on test donc si il y a une colision ou non entre les deux elements
  8. if ((F_Yg < R_Yd && F_Yg > R_Yg) || (F_Yd > R_Yg && F_Yd < R_Yd)) {
  9. return true;
  10. }
  11. return false;
  12. }
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS