PImage bg; class Ball // Klassendefinition { float radius; // Radius Variable float xPos; // Position in X float yPos; // Position in Y float velX; // Geschwindigkeit in X float velY; // Geschwindigkeit in Y color col = color(255); // Ball Farbe Ball(float r, float xp, float yp ,float vx, float vy) { radius = r; // Wertu?bergabe von lokalen xPos = xp ; // zu globalen Variablen yPos = yp; // u?bergeben aus Instanzierung velX = vx; // Dieses Mal auch mit der velY = vy; // Geschwindigkeit } //------------------------------------------------------------------------- void move() { draw(); // Aufruf den Ball zu zeichnen if(xPos > width) // Abfrage ob der Ball rechts { velX = -velX; // kehre die Geschwindigkeit um }else if(xPos < 0){ // wenn Ball links angestossen ist velX = -velX; } if(yPos > height) // Abfrage ob der Ball unten ist, dann { yPos = yPos-500; // setzte ihn wieder nach oben } yPos += velY; xPos += random(-1,1); // Berechnung der X Position : Schlingern } //------------------------------------------------------------------------- void draw() // Zeichenmethode { ellipseMode(CENTER); // setzt Kreismittelpunkt ellipse(xPos,yPos,radius*2,radius*2); // zeichne Ellipse } } //------------------------------------------------------------------ int ballnumber = 1500; // Anzahl der Schneeflocken Ball[] myBalls = new Ball[ballnumber]; // Definition Ball Array // somit kann jeder Ball // spa?ter durch seinen Index // direkt angesprochen // werden //------------------------------------------------------------------------- void setup() // Initialisierung des Programms { size(640,480); // Definition Applet Gršsse bg = loadImage ("winter.jpeg"); // Hintergrundbild for(int i = 0; i < ballnumber; i++) // Schleife zur Generierung { // von den 1500 Schneeflocken // Instanzierung der Klasse Ball mir Random Werten float ra = random(1,random(1,random(1,12))); // Verteilung: mehr kleine als grosse Schneeflocken stroke(255); // Umrandung auf weiss myBalls[i] = new Ball(ra,random(width),random(height),random(ra)+-1*random(ra),random(0.4,0.6)*ra ); // Letzter Wert: kleine Schneeflocken bewegen sich langsamer als grosse nach unten. } } //------------------------------------------------------------------------- void draw() // Wird an jeder Frame aufgerufen { background(bg); // Zeichne Hintergrund for(int i = 0; i < ballnumber;i++) // Schleife durch das { // myBall Array um alle myBalls[i].move(); // Ba?lle zu bewegen } }