Annonce

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


#1 2017-10-24 15:32:05 Changer la couleur plusieurs fois en cliquant

lilette
nouveau membre
Date d'inscription: 2017-10-24
Messages: 3

Changer la couleur plusieurs fois en cliquant



Bonjour, je me penche depuis plusieurs jours sur un programme qui me permettrait de changer la couleur d'une zone que j'ai choisie (pour le coup ce serait un rectangle qui ferait le quart de la fenêtre d'affichage en haut à droit). Le problème est que lorsque j’exécute le programme, il s'affiche en bas "the operator == is undefined for the argument type(s) void int". Le problème se trouve l.18 et l.21. Merci de votre aide.



1 color white = color(255,255,255);
2 color blue = color(0,0,255);
3 color pink = color(#FF83F1);
4 void setup(){
5  size(400,400);
6  mouseX=0;
7  mouseY=0;
8 }
9
10 void draw(){
11 }
12
13 void mouseReleased(){
14    if(0<mouseX && mouseX<width/2 && 0<mouseY && mouseY<height/2){
15      {
16      fill(white);rect(0,0,width/2,height/2);
17      }
18    if(rect(0,0,width/2,height/2) == white){       
19        fill(blue);rect(0,0,width/2,height/2);
20      }
21       if(rect(0,0,width/2,height/2) == blue){
22        fill(pink);rect(0,0,width/2,height/2);
23      }
24    }
25 }

Hors ligne

 

#2 2017-10-24 16:08:12 Re : Changer la couleur plusieurs fois en cliquant

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

Re: Changer la couleur plusieurs fois en cliquant



Bonjour,

La méthode rect() dessine un rectangle et n'envoie aucune valeur.
Une solution pour ton problème est de stocker en mémoire la couleur d'affichage du rectangle.

color white = color(255, 255, 255);
color blue = color(0, 0, 255);
color pink = color(255, 83, 200);
color couleur;

void setup() {
  size(400, 400);
  mouseX = 0;
  mouseY = 0;
  couleur = white;
  noStroke();
}

void draw() {
  fill(couleur);
  rect(0, 0, width/2, height/2);
}

void mouseReleased() {
  if ((0 < mouseX) && (mouseX < width / 2) && (0 < mouseY) && (mouseY < height / 2)) { 
    if (couleur == white) {
      couleur = blue;
    } else if (couleur == blue) {
      couleur = pink;
    } else if (couleur == pink) {
      couleur = white;
    }
  }
}

Hors ligne

 

#3 2017-10-24 16:23:00 Re : Changer la couleur plusieurs fois en cliquant

lilette
nouveau membre
Date d'inscription: 2017-10-24
Messages: 3

Re: Changer la couleur plusieurs fois en cliquant



Merci beaucoup pour votre réponse, je pense avoir compris le principe.

Hors ligne

 

#4 2017-11-12 16:20:49 Re : Changer la couleur plusieurs fois en cliquant

lilette
nouveau membre
Date d'inscription: 2017-10-24
Messages: 3

Re: Changer la couleur plusieurs fois en cliquant



Bonjour, cette fois j'ai décidé de changer mon programme et d'y introduire des get(). Lorsque j’exécute, le premier clic est concluant mais ensuite la couleur reste la même. Merci de votre aide.

color gris= color(200);
color vert= color(0,255,0);
color blanc= color(255,255,255);
color bleu= color(0,0,255);

void setup(){
size(400,400);
background(200);

}

void draw(){
   println(mouseX);
   println(mouseY);
  }
 
void mouseReleased(){
    if(0<=mouseX && mouseX<=(width/2) && 0<=mouseY && mouseY<=(height/2)){ //zone 1
      if(get(mouseX,mouseY) == gris){ //premier clic
      fill(blanc);
      noStroke();
      rect(0, 0, width/2, height/2);}
    } else if (get(mouseX,mouseY) == blanc){ //deuxieme clic
      fill(vert);
      noStroke();
      rect(0, 0, width/2, height/2);}
}

Hors ligne

 

#5 2017-11-12 20:59:47 Re : Changer la couleur plusieurs fois en cliquant

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

Re: Changer la couleur plusieurs fois en cliquant



Bonsoir,

Tu faisais le test de couleur sur une zone que le rectangle donc les deux conditions ne pouvaient être remplies. Voici la correction :

color gris= color(200);
color vert= color(0, 255, 0);
color blanc= color(255, 255, 255);
color bleu= color(0, 0, 255);

void setup() {
  size(400, 400);
  background(200);
}

void draw() {
  println(mouseX);
  println(mouseY);
}

void mouseReleased() {
  if (0<=mouseX && mouseX<=(width/2) && 0<=mouseY && mouseY<=(height/2)) { //zone 1
    if (get(mouseX, mouseY) == gris) { //premier clic
      fill(blanc);
      noStroke();
      rect(0, 0, width/2, height/2);
      return;
    }
    if (get(mouseX, mouseY) == blanc) { //deuxieme clic
      fill(vert);
      noStroke();
      rect(0, 0, width/2, height/2);
    }
  }
}

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017