We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hello,
this is my processing code so far but I want to change it. I create a rotation shape in the center but I want that all shapes (ellipse, rectangle, triangle) "shake" by clicking on the mouse. Can someone help me?
// globale Variablen
Rechteck[] rectangle;
Dreieck[] triangle;
Kreis[] circle;
float angle;
float jitter;
void setup()
{
// Konstruktoren
size(500, 500);
background(255);
rectangle = new Rechteck[900];
triangle = new Dreieck[900];
circle = new Kreis[900];
}
void draw() {
// for-Schleife zeichnet mehrere Kreise und verschiebt sie jedesmal um 150px in der y-Achse
for (int i=0; i <= 800; i = i+150) {
float x = 100;
float y = 100 + i;
// prüft ob Maus gedrückt wurde wenn ja erstellt er in zufälliger Position weitere Kreise
if (mousePressed == true) {
x += random(-330, 140);
y += random(-150, 20);
}
// erstellt neue Kreis Klasse im Array
circle[i] = new Kreis(x, y);
// ruft Display Funktion in der Kreis Klasse auf
circle[i].display();
}
// for-Schleife zeichnet mehrere Dreicke und verschiebt sie jedesmal um 160px in der y-Achse
for (int i=0; i <= 800; i = i+160) {
// zeichnet mehrere Dreiecke
float x = 380;
float y = 160 + i;
// prüft ob Maus gedrückt wurde wenn ja erstellt er in zufälliger Position weitere Dreiecke
if (mousePressed == true) {
x += random(-130, 140);
y += random(-150, 120);
}
// erstellt neue Dreieck Klasse im Array
triangle[i] = new Dreieck(x, y);
// ruft Display Funktion in der Dreieck Klasse auf
triangle[i].display();
}
// for-Schleife zeichnet mehrere Rechtecke und verschiebt sie jedesmal um 150px in der y-Achse
for (int i=0; i <= 800; i = i+150) {
float x = 250;
float y = 100 + i;
// prüft ob Maus gedrückt wurde wenn ja erstellt er in zufälliger Position weitere Rechtecke
if (mousePressed == true) {
x += random(-130, 240);
y += random(-50, 120);
}
// erstellt neue Rechteck Klasse im Array
rectangle[i] = new Rechteck(x, y);
// ruft Display Funktion in der Rechteck Klasse auf
rectangle[i].display();
}
// erstellt alle paar Sekunden neuen zufälligen Winkel
if (second() % 2 == 0) {
jitter = random(-0.5, 0.5);
}
// erstellt neue Rechtecke in Rotation
angle = angle + jitter;
float c = cos(angle);
translate(width/2, height/2);
rotate(c);
rect(0, 0, 20, 100);
}
class Dreieck {
// globale Variablen
color c;
float xpos1;
float ypos1;
float xpos2;
float ypos2;
float xpos3;
float ypos3;
float xspeed;
Dreieck(float x, float y) {
c = color(0);
xpos1 = x;
ypos1 = y;
xpos2 = xpos1+60;
ypos2 = ypos1-60;
xpos3 = xpos2-60;
ypos3 = ypos2-60;
}
void display() {
// färbt die Dreicke
stroke(153);
fill(122, 197, 205);
// zeichnet Dreieck
triangle(xpos1, ypos1, xpos2, ypos2, xpos3, ypos3);
}
}
class Kreis {
// globale Variablen
color c;
float xpos;
float ypos;
Kreis(float x, float y) {
c = color(0);
xpos = x;
ypos = y;
}
void display() {
// färbt die Kreise
fill(180, 238, 180);
// zeichnet Kreis
ellipse(xpos, ypos, 100, 100);
}
}
class Rechteck {
// globale Variablen
color c;
float xpos;
float ypos;
Rechteck(float x, float y) {
c = color(0);
xpos = x;
ypos = y;
}
void display() {
// färbt die Rechtecke
fill(255,193,193);
// zeichnet Rechteck
rectMode(CENTER);
rect(xpos, ypos, 100, 100);
}
}
Answers
Do you mean you click anywhere and all wigglle or rather you click one item specifically and only this starts?
For the latter look at dist() in the reference ; place it in a function mouseTrigger or whatever and if(dist(.... set a boolean isShaking to true
In the display of the function say if(isShaking..... and then eh add a random value to the position
Hello again, Thank u for your help. Where should I paste the code?can u Explain it for me,I am a beginner and I try to understand it.
I asked a question that you didn't answer
Write a function mousePressed- see the reference
For loop over all arrays, use if(dist....
if true set boolean and quit function using return;
@serhan You need to clarify:
Also by any chance would you code be improved by adding
background(255);
as the first line in draw, Line 19?Kf