GMU:Einführung ins Programmieren mit Processing/part II/Snowflakes

From Medien Wiki
< GMU:Einführung ins Programmieren mit Processing‎ | part II
Revision as of 20:55, 6 December 2011 by Sufu7194 (talk | contribs) (Created page with "The complete package with images and audio: File:Snowflakes.zip <code> import ddf.minim.*; // minim-Audio-Toolkit Minim minim; // Instanz der minim Bibliothek // Instanzen ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The complete package with images and audio:

File:Snowflakes.zip

import ddf.minim.*; // minim-Audio-Toolkit Minim minim; // Instanz der minim Bibliothek // Instanzen der Audiofiles AudioSample shot; AudioSample glass;

//globale Variablen

PFont font;

PImage backgroundimage;

int Xres=600; //screenWidth int Yres=600; //screenHeight

ArrayList snowflakes_array;

//Schneeflockenklasse

class Asnowflake {

 float ypos;
 float speed=1;
 float count=20;
 float xpos;
 int flakesize;
 float varBlue = random(50, 100);
 float Ysize; 
 float Xsize; 
 
 PImage schneeflocke = loadImage("schneeflocke.png");
 
 Asnowflake (float y,float x, float sp, int si) 
 {  
   speed = sp;
   ypos=y;
   xpos=x;
   flakesize = si;
   
   schneeflocke.resize(flakesize,flakesize);
   Ysize = schneeflocke.height;
   Xsize = schneeflocke.width;
 }
 
 boolean collission()
 {
   if((mouseX > xpos) && (mouseY > ypos) && (mouseY < ypos+Ysize) && (mouseX < xpos+Xsize)) 
   { 
   return true;
   } else return false;
 }
 
 void update()
 { 
   ypos += speed; 
   if (ypos > Yres+Ysize*2)
   { 
     ypos = 0-Ysize;
     xpos = random(0,Xres);
   }
   
   // sin(x)*y  x=periodenlänge, y=amplitude
   //xpos=xpos+sin(ypos/20)/(Ysize/20);
   xpos=xpos+sin(ypos/Ysize)*Ysize/20;  
   //xpos=xpos+sin(ypos*(Ysize/4)/500)*(Ysize/40);
   
   image(schneeflocke,xpos,ypos);
 }

}

void mousePressed() //mouseClicked {

 shot.trigger(); 

}

void setup() {

 minim = new Minim (this);
 // Audiodatei aus dem data-Ordner laden
 shot = minim.loadSample ("40161__nonoo__flobert1-20070728.aiff",256);
 glass = minim.loadSample ("977__rhumphries__rbh-glass-break-01.aiff",256);
 backgroundimage = loadImage("winter.jpg");
 //Ysize = backgroundimage.height;
 //Xsize = backgroundimage.width;
 backgroundimage.resize(Xres,Yres);
 
 //erzeugen eines fontdatei und laden selbiger
 font = createFont("AGaramondPro-Bold-48",20); //name, size, smooth, charset
 textFont(font);
 
 frameRate(50);
   
 size(Xres, Yres); //fensterauflösung festlegen
 
 //erzeugen der schneeflocken
 
 snowflakes_array = new ArrayList();
 
 int anz=30;
 
 for (int i=1;i<=anz;i++)
 {
   snowflakes_array.add(new Asnowflake(random(0,Yres),random(0,Xres),random(4,4.5),50));
 }
 
 for (int i=1;i<=anz*2;i++)
 {
   snowflakes_array.add(new Asnowflake(random(0,Yres),random(0,Xres),random(2.5,3),40));
 }
 
 for (int i=1;i<=anz*4;i++)
 {
   snowflakes_array.add(new Asnowflake(random(0,Yres),random(0,Xres),random(0.1,0.5),20));
 }

}

void drawcursor() {

 stroke(0); strokeWeight(3); noFill();
 ellipse(mouseX,mouseY,30,30);
 ellipse(mouseX,mouseY,15,15);
 line(mouseX, mouseY-20,mouseX,mouseY+20);
 line(mouseX-20, mouseY,mouseX+20,mouseY);
 smooth();

}

void draw() {

 noCursor();
 
 //background(100, 100, 100);
 image(backgroundimage,0,0);
 
 //durchlaufen der arraylist, die die flocken enthält und updaten der variablen
 
 for (int i=0;i<=snowflakes_array.size()-1;i++)
 {
   Asnowflake Asnowflake = (Asnowflake) snowflakes_array.get(i);
   
   if(mousePressed)
   {
     if(Asnowflake.collission())
     {
     snowflakes_array.remove(i);
     glass.trigger (); 
     mousePressed = false;
     }
   }
   Asnowflake.update();
 }
 fill(255, 255, 255);
 text("Snowflakes:"+snowflakes_array.size(), 10, 10, 500, 100); //text,x,y,width textbox,height textbox
 text("Frames:"+ceil(frameRate), 10, 40, 500, 100); //text,x,y,width textbox,height textbox
 
 drawcursor();

}