Annonce

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


#1 2013-02-21 14:46:57 Problème de boucle

Tim
nouveau membre
Date d'inscription: 2011-12-03
Messages: 7

Problème de boucle



Bonjour,

Je débute en processing et je viens de faire un programme, j'aimerai lorsque j'appuie sur une touche du clavier faire apparaitre une image, sauf qu'elle s'affiche en boucle et fait planter le programme, est ce que vous auriez une petite idée pour résoudre le problème ?
Merci d'avance !

Voici mon code :



class Check {
  int x, y;
  int size;
  color baseGray;
  boolean checked = false;
  Check(int xp, int yp, int s, color b){
    x = xp;
    y = yp;
    size = s;
    baseGray = b;
  }

  void press(float mx, float my) {
    if (mouseButton==LEFT &&(mx >= x) && (mx <= x+size) && (my >= y) && (my <= y+size)){
      checked = true;
    }
    else if (mouseButton==RIGHT &&(mx >= x) && (mx <= x+size) && (my >= y) && (my <= y+size)){
      checked = false;
    }
  }

  void display(){
    stroke(0, 170, 200);
    strokeWeight(1);
    fill(255,0);
    rect(x, y, size, size);
    if (checked == true) {
      fill(242, 32, 5, 200);
      rect(x, y, 14, 14);
    }

  }
}

int numChecks = 4000;
Check[] checks = new Check[numChecks];
void setup() {
  size(1148, 728);
  int x =14;
  int y = 14;
  for (int i = 0; i < numChecks; i++) {
    checks[i] = new Check(x, y, 14, color(255));
    x += 14;
    if (x > 1120) {
      x = 14;
      y += 14;
    } 
  }
}

void draw(){
  background(255);
 
  if (key=='a'){
    PImage monImage;
    monImage = loadImage ("Aa.jpg");
    image (monImage, 84, 84);
  } 
  else if (key=='b'){
    PImage monImage;
    monImage = loadImage ("Bb.jpg");
    image (monImage, 84, 84);
  }
  else if (key=='c'){
    PImage monImage;
    monImage = loadImage ("Cc.jpg");
    image (monImage, 84, 84);
  }
  else if (key=='d'){
    PImage monImage;
    monImage = loadImage ("Dd.jpg");
    image (monImage, 84, 84);
  }
  else if (key=='e'){
    PImage monImage;
    monImage = loadImage ("Ee.jpg");
    image (monImage, 84, 84);
  }
  for (int i=0; i<numChecks; i++) {
    checks[i].display();
  }
  for(int i=0; i<1000; i+=70){
  stroke(0, 130, 220);
  strokeWeight(1.2);
  line(14, 14+i, 1134, 14+i);
  }
  for(int i=0; i<1135; i+=70){
  stroke(0, 70, 220);
  strokeWeight(1.2);
  line(14+i, 14, 14+i, 714);
  }
  noCursor();
  stroke(255);
  fill(242, 32, 5, 200);
  rect(mouseX-7, mouseY-7, 14, 14);
}



void mousePressed(){
  for (int i = 0; i < numChecks; i++) {
    checks[i].press(mouseX, mouseY);
  }
}

void mouseDragged(){
  for (int i = 0; i < numChecks; i++) {
    checks[i].press(mouseX, mouseY);
  }
}

Hors ligne

 

#2 2013-02-21 15:37:00 Re : Problème de boucle

Leuprochon
nouveau membre
Date d'inscription: 2013-02-20
Messages: 6

Re: Problème de boucle



Si tu fais

if ( keyPressed )
{
if (keyCode == a ){.....}
}

Ca marche pas ?

Hors ligne

 

#3 2013-02-21 16:35:44 Re : Problème de boucle

Tim
nouveau membre
Date d'inscription: 2011-12-03
Messages: 7

Re: Problème de boucle



Bonjour,

Merci pour ta réponse.
Je viens de tester et ça ne fonctionne pas, les images n'apparaissent pas.

Hors ligne

 

#4 2013-02-21 19:08:55 Re : Problème de boucle

BlackTree
membre
Date d'inscription: 2012-11-13
Messages: 25
Site web

Re: Problème de boucle



Essaye de mettre les touches appuyées sur une fonction keypressed()  [http://processing.org/reference/keyPressed_.html] plutôt que dans draw(), avec en fonction de la touche appuyée soit l'image, ou si ça ne fonctionne pas soit une variable qui prends une valeur de 1 à 5, tu ajouteras les structures conditionnelles avec cette variable dans draw() pour afficher les images. Si ça ne fonctionne toujours pas essaye de reset la variable à 0 après chaque image affiché.
Tu dois avoir en tête que draw() est une boucle et que si tu demande dans cette boucle d'afficher une image, elle s'affichera en boucle. De même il suffit d'une fois que key soit appuyé pour que la condition soit toujours vérifiée dans draw().
Aussi met donc le noCursor() en setup().

Dernière modification par BlackTree (2013-02-21 19:19:15)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024