Annonce

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


#1 2016-03-22 22:29:53 Problème avec keyPressed

besseo
nouveau membre
Date d'inscription: 2016-03-22
Messages: 2

Problème avec keyPressed



Bonsoir à tous , j'ai un petit problème sur procesing je suis entrain de faire un petit jeu de plateforme , donc je code chaque touches avec des par exemple :
if ((keyPressed == true) && (key == 'a'))x=x-vx;
if ((keyPressed == true) && (key == 'd'))x=x+vx;
j'ai un problème qui es assez prévisible , c'est que je ne peux pas presser les deux touches en même temps .
Si je veux que mon personnage je saute je presse la touche assignée au saut mais ça annule la pression que je suis entrain de faire sur la touche pour me faire aller à droite .
Je me demandais donc si il y avait un autre moyen que les if (keyPressed == true) pour utiliser mon clavier .
Merci d'avance smile

Dernière modification par besseo (2016-03-22 22:32:19)

Hors ligne

 

#2 2016-03-23 11:43:59 Re : Problème avec keyPressed

matheynen
membre
Date d'inscription: 2008-06-09
Messages: 226

Re: Problème avec keyPressed



C'est une bonne question que tu poses et j'ai trouvé ça sur le forum Processing :

boolean isKeyUp, isKeyRight, isKeyLeft, isKeyDown;

void draw() {
}
 
void keyPressed() {
  int k = keyCode;
  setDirection(k, true);
}
 
void keyReleased() {
  setDirection(keyCode, false);
}
 
void setDirection(int k, boolean bool) {
  if      (k == UP    | k == 'W')   isKeyUp    = bool;
  else if (k == DOWN  | k == 'S')   isKeyDown  = bool;
  else if (k == LEFT  | k == 'A')   isKeyLeft  = bool;
  else if (k == RIGHT | k == 'D')   isKeyRight = bool;
}

Ce que vous avez fait au plus petit de mes frères, c'est à moi que vous l'avez fait.

Hors ligne

 

#3 2016-03-23 11:46:27 Re : Problème avec keyPressed

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: Problème avec keyPressed



Salut Besseo et bienvenue!

Tu peux utiliser un tableau pour stocker les touches qui sont en train d'être appuyées, voila un petit exemple qui fonctionne avec les touches g, h, y, b pour faire se déplacer un cercle. C'est adapté d'une discussion sur l'ancien forum processing! https://processing.org/discourse/beta/n … 08305.html

int nrKeys = 0;
PFont font;
boolean[] downKeys = new boolean[256];
float x = 50;
float y = 50;

void setup() {
size(200,200);
fill(255);
font = createFont("Courier", 20);
textFont(font);
}

void draw() {
background(0);

// afficher l'etat des touches pressees
nrKeys = 0;
for (int i=0; i<downKeys.length; i++) {
   if (downKeys[i]) {
     nrKeys++;
     text((char)i, 10 * nrKeys, height/2);
   }
}
fill(255, 255);
text("Nr. of Keys: " + nrKeys, 20,20);

// modifier les valeurs des variables en fonction des touches appuyees
// g : mouvement vers la gauche en x
// h : mouvement vers la droite en x
// y : mouvement vers le haut en y
// b : mouvement vers le bas en y
if (downKeys['g']) x -= 1;
if (downKeys['h']) x += 1;
if (downKeys['y']) y -= 1;
if (downKeys['b']) y += 1;

// tracer un cercle à la position x, y
fill(255, 0, 0, 127);
ellipse(x, y, 10, 10);

}

void keyPressed() {
println(key);
if (key<256) {
   downKeys[key] = true;
}
}

void keyReleased() {
if (key<256) {
   downKeys[key] = false; 
}
}

Hors ligne

 

#4 2016-03-23 14:28:02 Re : Problème avec keyPressed

besseo
nouveau membre
Date d'inscription: 2016-03-22
Messages: 2

Re: Problème avec keyPressed



Merci pour vos résponses très rapide je vais tester ça desuite  smile

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2025