float rechtecksLaenge; float xZufall; float yZufall; int zufallsStreuung = 20; int malGrenze = 0; //64; //ab welchem y-Wert soll gemalt werden?// ist jetzt veraltet, da die Werkzeugleiste jede Runde neu gezeichnet wird :-) int form = 1; int formOver = 0; int formGroesse = 6; int formHighlight = 0; int farbe = 5; int farbeOver = 0; int farbeHighlight = 0; int loesch = 0; int loeschOver = 0; float blinkZaehler = 0; int mausGedrueckterBereich = 0; //hier wird gespeichert, ob man gerade am Malen ist oder am Werkzeug wŠhlen. Nštig, damit man nicht beim Malen aus Versehen das Werkzeug wechselt. //0 = Maus nicht gedrŸckt, 1 = Malen, 2 = Werkzeug wŠhlen. int mausGedrueckterBereichPermanentVORHER = 0; int mausGedrueckterBereichDirektVORHER = 0; //int farbAbweichung = 10; //int intensitaet; void setup() { size(643, 500); background(255); framerate(60); fill(230); noStroke(); rect(0,0,569,30); stroke(200); line(0,30,700,30); for(int i = 1; i <= 8; i = i + 1) { line(500/7 * i, 0, 500/7 * i, 30); } } void draw() { formOver = 0; formHighlight = 0; farbeOver = 0; farbeHighlight = 0; loeschOver = 0; mausGedrueckterBereichDirektVORHER = mausGedrueckterBereich; /////////// es zeigt immer an, was mausGedrueckterBereich vorher fŸr einen Wert hatte :-) if (mousePressed && mausGedrueckterBereich == 0) { mausGedrueckterBereichPermanentVORHER = mausGedrueckterBereich; } if (!mousePressed && mausGedrueckterBereich != 3) { if (mausGedrueckterBereich != 0) { mausGedrueckterBereichPermanentVORHER = mausGedrueckterBereich; } mausGedrueckterBereich = 0; } //Bedienungselemente // println("mouseX=" + mouseX + " mouseY=" + mouseY); ////////////////////////////////////WERKZEUGBEREICH///////////////////////////////////////////////// if (mouseY <= 30) { if (!mousePressed) { cursor(HAND); } if (mousePressed && mausGedrueckterBereich != 1) { if (mouseX <= 70) { form = 1; formHighlight = 1; loesch = 0; } else if (mouseX <= 141) { form = 2; formHighlight = 2; loesch = 0; } else if (mouseX <= 212) { form = 3; formHighlight = 3; loesch = 0; } else if (mouseX <= 283) { farbe = 1; farbeHighlight = 1; loesch = 0; } else if (mouseX <= 354) { farbe = 2; farbeHighlight = 2; loesch = 0; } else if (mouseX <= 425) { farbe = 3; farbeHighlight = 3; loesch = 0; } else if (mouseX <= 497) { farbe = 4; farbeHighlight = 4; loesch = 0; } else if (mouseX <= 568) { farbe = 5; farbeHighlight = 5; loesch = 0; } else { // lšschen if (loesch == 0 && mausGedrueckterBereichDirektVORHER == 0) { loesch = 1; mausGedrueckterBereich = 2; //ehem. = 1 } else if (loesch == 1 && mausGedrueckterBereichDirektVORHER == 0) { fill(255); rect(0,31,650,500); loesch = 0; mausGedrueckterBereich = 2; } } if (mausGedrueckterBereich == 0) { mausGedrueckterBereich = 2; } } else if (mausGedrueckterBereich != 1) { if (mouseX <= 70) { formOver = 1; } else if (mouseX <= 141) { formOver = 2; } else if (mouseX <= 212) { formOver = 3; } else if (mouseX <= 283) { farbeOver = 1; } else if (mouseX <= 354) { farbeOver = 2; } else if (mouseX <= 425) { farbeOver = 3; } else if (mouseX <= 497) { farbeOver = 4; } else if (mouseX <= 568) { farbeOver = 5; } else if (mouseX <= 643) { loeschOver = 1; } } } else { ////////////////////////////MALEN///////////////////////////////////////////// if (!mousePressed) { cursor(CROSS); } // blinkZaehler = 0; if (mouseY > malGrenze) { switch(farbe) { case 1: fill(0,200,0,40); break; case 2: fill(200,0,0,40); break; case 3: fill(0,0,200,40); break; case 4: fill(255,255,0,45); break; case 5: fill(0,0,0,40); break; } if (mousePressed && mausGedrueckterBereich !=2) { loesch = 0; mausGedrueckterBereich = 1; if(form == 1) { rechtecksLaenge = sq(random(formGroesse)); rect(mouseX - rechtecksLaenge/2 + random(-zufallsStreuung, zufallsStreuung), mouseY - rechtecksLaenge/2 + random(-zufallsStreuung, zufallsStreuung), rechtecksLaenge, rechtecksLaenge); } if(form == 3) { rechtecksLaenge = sq(random(formGroesse)); ellipse(mouseX + random(-zufallsStreuung, zufallsStreuung), mouseY + random(-zufallsStreuung, zufallsStreuung), rechtecksLaenge, rechtecksLaenge); } if(form == 2) { xZufall = random(-zufallsStreuung, zufallsStreuung); yZufall = random(-zufallsStreuung, zufallsStreuung); rechtecksLaenge = sq(random(formGroesse * 1.1)); triangle(mouseX - rechtecksLaenge/2 + xZufall, mouseY + rechtecksLaenge/2 + yZufall, mouseX + rechtecksLaenge/2 + xZufall, mouseY + rechtecksLaenge/2 + yZufall, mouseX + xZufall, mouseY - (.75 * sq(rechtecksLaenge) - rechtecksLaenge/2) / (0.1* sq(rechtecksLaenge)+.01) + yZufall); } } } } bedienungsElemente(); if (loesch == 1) { blink(1); // delay(200); } // println("mausGedrueckterBereich=" + mausGedrueckterBereich); println(loesch + " " + mausGedrueckterBereich + " " + mausGedrueckterBereichDirektVORHER + " " + mausGedrueckterBereichPermanentVORHER); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void blink(int blinkenJaNein) { fill(255,221,83,255); fill(230); if(mousePressed) { fill(210); } rect(569,0,74,30); if (blinkenJaNein == 0) { stroke(200,0,0,120); strokeWeight(2); line(569,0,569+74,29); line(569,29,569+74,0); strokeWeight(1); } else if (blinkenJaNein == 1) { blinkZaehler = blinkZaehler + .05; if (blinkZaehler/2.0 < round(blinkZaehler/2) * 1.0) { stroke(200,0,0,120); strokeWeight(2); line(569,0,569+74,29); line(569,29,569+74,0); strokeWeight(1); } delay(5); } noStroke(); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void bedienungsElemente() { fill(230); noStroke(); rect(0,0,569,30); stroke(200); line(0,30,700,30); for(int i = 1; i <= 8; i = i + 1) { line(500/7 * i, 0, 500/7 * i, 30); } fill(230); stroke(200); rect(25,5,20,20); triangle(95,25,121,25,108,3); ellipse(179,15,23,23); noStroke(); //grŸn fill(0,200,0,100); rect(214,10,70,10); //rot fill(200,0,0,100); rect(285,10,70,10); //blau fill(0,0,200,100); rect(356,10,70,10); //gelb fill(255,255,0,100); rect(427,10,70,10); //schwarz fill(0,0,0,100); rect(498,10,70,10); //lšschen fill(230); rect(569,0,74,30); stroke(200); line(569,0,569+74,30); line(569,30,569+74,0); //Hervorhebung der gewŠhlten Form noFill(); stroke(100); if (form == 1 || formOver == 1) { //Quadrat rect(25,5,20,20); } if (form == 2 || formOver == 2) { //Dreieck triangle(95,25,121,25,108,3); } if (form == 3 || formOver == 3) { // Kreis ellipse(179,15,23,23); } //Hervorhebung der gewŠhlten und der evtl. Ÿberfahrenen Farbe noStroke(); if (farbe == 1 || farbeOver == 1) { //grŸn fill(0,200,0,200); rect(214,10,70,10); } if (farbe == 2 || farbeOver == 2) { //rot fill(200,0,0,200); rect(285,10,70,10); } if (farbe == 3 || farbeOver == 3) { //blau fill(0,0,200,200); rect(356,10,70,10); } if (farbe == 4 || farbeOver == 4) { //gelb fill(255,255,0,250); rect(427,10,70,10); } if (farbe == 5 || farbeOver == 5) { //schwarz fill(0,0,0,180); rect(498,10,70,10); } if (loeschOver == 1) { blink(0); // delay(200); } //Hervorhebung der gerade gedrŸckten Form fill(200); stroke(100); if (formHighlight == 1) { //Quadrat rect(25,5,20,20); } if (formHighlight == 2) { //Dreieck triangle(95,25,121,25,108,3); } if (formHighlight == 3) { // Kreis ellipse(179,15,23,23); } //Hervorhebung der gerade gedrŸckten Farbe noStroke(); if (farbeHighlight == 1) { //grŸn fill(0,120,0,200); rect(214,10,70,10); } if (farbeHighlight == 2) { //rot fill(120,0,0,200); rect(285,10,70,10); } if (farbeHighlight == 3) { //blau fill(0,0,120,200); rect(356,10,70,10); } if (farbeHighlight == 4) { //gelb fill(190,190,0,200); rect(427,10,70,10); } if (farbeHighlight == 5) { //schwarz fill(0,0,0,255); rect(498,10,70,10); } }