Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2016-05-13 15:46:17 Probleme : Pacman sur processing

Silvesster
nouveau membre
Date d'inscription: 2016-04-29
Messages: 2

Probleme : Pacman sur processing



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 :http://codelab.fr/up/pacman.jpg
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 smile

Hors ligne

 

#2 2016-05-13 17:08:23 Re : Probleme : Pacman sur processing

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Probleme : Pacman sur processing



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

 

#3 2016-05-20 16:03:58 Re : Probleme : Pacman sur processing

Silvesster
nouveau membre
Date d'inscription: 2016-04-29
Messages: 2

Re: Probleme : Pacman sur processing



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

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2025