Bonjour , je travail sur un projet de fin d'année en ISN , un projet plutôt compliqué d'ailleurs, le jeu d'arcade PACMAN . Mais j'ai un problème, des problèmes de collisions je vois dans ma tête comment le régler mais je ne sais pas comment faire .
Déjà voici les bugs :
J'ai une solution : faire une variable qui , selon la touche pressé regarde tout les pixel en face car le bug est dû au fait que
couleurpixelhaut=get(PosXPacman,PosYPacman-20); couleurpixelbas=get(PosXPacman,PosYPacman+20); couleurpixeldroite=get(PosXPacman+20,PosYPacman); couleurpixelgauche=get(PosXPacman-20,PosYPacman);
Après j'aimerais aussi que si j'appuis sur la touche haut la tête se tourne vers le haut (puis les autres directions) et faire que la bouche du pacman se ferme et s'ouvre .
le code pour vous éclairer :
int PosXPacman; int PosYPacman; int VitXPacman; int VitYPacman; int couleurpixelhaut; int couleurpixelbas; int couleurpixeldroite; int couleurpixelgauche; void setup() { size(500,500); PosXPacman=250; PosYPacman=250; VitXPacman=0; VitYPacman=0; } void draw(){ size(500,500); background(0,0,0); fill(0,0,255); rect(0,0,500,10);//debut contour bleu rect(490,0,10,230);//rect(x,y,longeur,largeur) rect(0,490,500,10); rect(490,270,10,230); rect(0,0,10,230); rect(0,270,10,230);//fin contour bleu rect(50,50,150,80);//debut obstacle rect(240,10,40,120); rect(320,50,20,80); rect(380,50,70,80); rect(50,170,150,40); rect(240,170,210,40); rect(50,250,20,200); rect(330,250,120,100); rect(110,390,60,60); rect(210,390,240,60); fill(255,255,255); rect(110,250,180,100); fill(255,255,0); couleurpixelhaut=get(PosXPacman,PosYPacman-20); couleurpixelbas=get(PosXPacman,PosYPacman+20); couleurpixeldroite=get(PosXPacman+20,PosYPacman); couleurpixelgauche=get(PosXPacman-20,PosYPacman); arc(PosXPacman,PosYPacman,39,39,radians(45),radians(315)); PosXPacman=VitXPacman+PosXPacman; PosYPacman=VitYPacman+PosYPacman; if(blue(couleurpixelhaut)==255 && red(couleurpixelhaut)==0 && green(couleurpixelhaut)==0 && VitYPacman==-1){ PosYPacman=PosYPacman+1; VitYPacman=0; } if(blue(couleurpixeldroite)==255 && red(couleurpixeldroite)==0 && green(couleurpixeldroite)==0 && VitXPacman==1){ PosXPacman=PosXPacman-1; VitXPacman=0; } if(blue(couleurpixelgauche)==255 && red(couleurpixelgauche)==0 && green(couleurpixelgauche)==0 && VitXPacman==-1){ PosXPacman=PosXPacman+1; VitXPacman=0; } if(blue(couleurpixelbas)==255 && red(couleurpixelbas)==0 && green(couleurpixelbas)==0 && VitYPacman==1){ PosYPacman=PosYPacman-1; VitYPacman=0; } if(PosXPacman>500){ PosXPacman=0; } if(PosXPacman<0){ PosXPacman=500; } } void keyPressed(){ if(keyCode == UP){ VitYPacman=-1; VitXPacman=0; } if(keyCode == DOWN){ VitYPacman=1; VitXPacman=0; } if(keyCode == RIGHT){ VitYPacman=0; VitXPacman=1; } if(keyCode == LEFT){ VitYPacman=0; VitXPacman=-1;; } }
Merci de votre lecture
Hors ligne
Bonjour,
Le sujet a déjà été traité il y a peu de temps :
http://codelab.fr/6246
Puis :
http://codelab.fr/5509
http://codelab.fr/4974
Inspire-toi des différentes solutions pour écrire la tienne.
N'hésite pas à solliciter de l'aide quand tu bloqueras.
Bon courage
Hors ligne
Bonjour Mushussu ,
les sujets traités parlent tous de Classes et de PVector mais je n'ai jamais appris cela en ISN donc je ne peux pas les employés , merci de ta réponse rapide (je m’excuse de ma réponse lente par ailleurs); par ailleurs je voudrais faire des Points (que pacman mange) et de les faire disparaitre une fois qu'il passe dessus j'ai une idée avec le Get() mais comme je dois mettre les points dans le draw il reaparaissent forcement .
PS:j'ai réglé les histoires de bouche de pacman et changements de directions
Dernière modification par Silvesster (2016-05-20 16:28:24)
Hors ligne
Pages: 1