[AS2] Augmenter la vitesse des fantômes de Pacman selon la difficulté du jeu.

poulibou Messages postés 4 Date d'inscription mardi 27 février 2007 Statut Membre Dernière intervention 15 septembre 2009 - 15 sept. 2009 à 13:09
craloo Messages postés 5 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 15 novembre 2009 - 15 nov. 2009 à 11:31
Sujet : [AS2] Augmenter la vitesse des fantômes de Pacman selon la difficulté du jeu.

Bonjour,


Me voila confronté à un problème à la fois technique et logique alors que je suis entrain de modifier un jeu Pacman à partir de sources existantes(réalisées en actionScript 2).

Voici mes sources : ici


DESCRIPTION DU PROBLEME : Sur le terrain, les fantômes se décalent au fur et à mesure pour se hurter dans les murs, et par

finalement provoquer des bugs comme par exemple voir un des fantômes sortir du terrain.

Le problème est apparu au moment ou j'ai choisi d'ajouter une nouvelle difficulté (les fantômes vont de plus en plus vite

selon le level du jeu)


Dans le jeu d'origine, il n y a que deux vitesses différentes pour les fantômes : "ghFast" et une vitesse plus lente. Elles

sont décrites par ce code :

// Control Ghost speed (pair must be multiple of 12, i.e. 4x(2+1) or 2x(5+1) )
if (ghFast) {
ghStep = 4;
ghPosMax = 2;
}
else {
ghStep = 2;
ghPosMax = 5;
}


Le nombre 12 cité dans les commentaires équivaut à la taille en pixel d'un bloc sur le terrain ( de taille 28*31 blocs).
Chaque blocs étant décrit par un caractère comme dans exemple ci-dessous.

"############################"+
"G..........................D"+
"G......DG....DG....DG......D"+
"G.4BBBBERBB3.DG.4BBERBBBB3.D"+
"G.##########.21.2HHHHHHHH1.D"+
"G..........................D"+
"G.4BB3.43.4BBBBBB3.43.4BB3.D"+
"G.2HH1.DG.2HHZAHH1.DG.2HH1.D"+
"G......DG....DG....DG......D"+
"RBBBB3.DRBB3 DG 4BBEG.4BBBBE"+
"     G.DAHH1 21 2HHZG.D     "+
"     G.DG          DG.D     "+
"     G.DG 4B----B3 DG.D     "+
"2HHHH1.21 D | | |G 21.2HHHH1"+
"L     .   D | | |G   .     F"+
"4BBBB3.43 D   |||G 43.4BBBB3"+
"     G.DG ######## DG.D     "+
"     G.DG          DG.D     "+
"     G.DG 4BBBBBB3 DG.D     "+
"AHHHH1.21 2HHZAHH1 21.2HHHHZ"+
"G............DG............D"+
"G.4BB3.4BBB3.DG.4BBB3.4BB3.D"+
"G.2HZG.2HHH1.21.2HHH1.DAH1.D"+
"GO..DG.......  .......DG..OD"+
"RB3.DG.43.4BBBBBB3.43.DG.4BE"+
"AH1.21.DG.2HHZAHH1.DG.21.2HZ"+
"G......DG....DG....DG......D"+
"G.4BBBBERBB3.DG.4BBERBBBB3.D"+
"G.##########.21.2HHHHHHHH1.D"+
"G..........................D"+
"############################";


La vitesse des fantômes est donc liée à la taille du terrain.

Si j'ai bien compris : la taille d'un bloc fait 12 pixels. Par tour, le fantôme ne peut se déplacer que d'un bloc. (Le moteur

de jeu tournant en boucle, j'entend par "un tour", une répétition de cette boucle). donc on utilise ghStep pour indiquer la

taille du pas d'un fantôme et ghPosMax pour indiquer le nombre maximum de pas que le fantôme pourra faire pendant ce tour.

Un fantôme rapide fera plus de "pas" (ghStep 4) et en aura moins à faire (ghPosMax2) pour arriver au bloc suivant (12px);

le couple ghStep et ghPosMax doit toujours être égal à 12, car sinon, les fantômes se décalent progressivement du chemin pour

se hurter dans les murs.


Dans mon propre code, j'ai ajouté la fameuse difficulté (pour changer la vitesse des fantômes à chaque niveau).
A chaque nouveau level, la difficulté s'incrémente, devenant de plus en plus petite.

echelle = 12;
difficulte = 7;
if (ghFast) {
ghStep = echelle/difficulte;
ghPosMax = (echelle/ghStep)-1;
}
else {
ghStep = echelle/(difficulte*2);
ghPosMax = (echelle/ghStep)-1;
}



Le problème est ici : selon la difficulté choisie, ici 7 par exemple, les valeurs ghStep ghPosMax ne sont plus des entiers

mais des nombres décimaux, et dans ce cas précis, j'ai l'impression que ça pose problème. D'autre part, cette partie du code

ne semble pas être la seule à poser problème car les fantômes ont tendances à ce décaler également quand ils sont bleus.


Vous l'aurez compris : je suis un peu perdu !

Je vous joint mes sources actuelles au cas ou une âme généreuse puisse me venir en aide ! Merci.

La source : ici

1 réponse

craloo Messages postés 5 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 15 novembre 2009
15 nov. 2009 à 11:31
Bonjour,

je viens de vous envoyer un Message Privé...

A bientôt j'espère :)
0
Rejoignez-nous