21. September 2012
Programming Basics, Tag 3 Heute hatten wir den Auftrag einen rekursiven Code ab zu ändern. Das System eines solchen Codes ist sehr interessant. Ich hab mit der Tiefe und dem Count herum gespielt, dies brachte mein MacBook Air ziemlich an seine Grenzen 😉 Mein Ziel für diese Übung war es eine Stadt zu bauen, dies gelang mir aber nur annähernd. Hier habe ich den Verlauf mit Screenshots dokumentiert: Hier der Code:void setup() //set up festlegen { size(600,600); //def. Fenstergrösse randomSeed(millis()); //seed random definieren, rechnet um, wie viel Zeit seit dem Start vergangen ist smooth(); //aktiviere antialiasing strokeWeight(5); //linienbreite stroke(0,0,0,150); //farbe der linie ist schwarz mit 150% transparänz noLoop(); //keine automatische wiederholung -> kein Loop } void draw() { background(255); //BG wird auf weiss gesetzt pushMatrix(); //das aktuelle koordinatensystem wird auf dem stack gespeichert translate(width *.5,height - 40); //das koordinatensystem wird auf die hälfte der länge (*0.5) verschoben$ //und die höhe minus 40 (nach oben) verschoben wurzel(4); //hier wird die Funktion wurzel mit dem wert 7 gefüllt und aufgerufen popMatrix(); } void mousePressed() //eine IF abfrage ob ein mouse button is pressed or not { redraw(); //If a mouse button is pressed, then redraw } //funktion void wurzel(int tiefe) //Wurzel ist eine funktion die keinen wert zurück gibt, die tiefe hat nur ganzzahlen { if(tiefe <=0) // teste ob das ende erreicht ist - die tiefe kleiner oder = 0 ist { //zeichne blueten pushStyle(); //speichert die aktuellen style settings int clr = (int)random(100,255); //clr ist ein ganzzahl random zwischen der farbe rot - 100 und 255 stroke(clr,0,0,190); //die linie hat den roten farbrandom und transparenz von 190 fill(clr,0,0,190); // dito //ellipse(0,0,50,50); // dito //House hinterseite line(-30, 20, -85, 20); line(-85, 20, -85, 75); line(-85, 75, -30, 75); line(-30, 75, -30, 20); triangle(-85 , 20, -50, -30,-30,20); //verbindungen line(-85,20,-65,30); line(-85, 75,-65, 85); line(-30, 75,-10, 85); line(-30, 20, -10, 30); //triangle linke seite triangle(-85 , 20, -50, -30,-65,30); //triangle rechte seite triangle(-30 , 20, -50, -30,-10,30); //hous vorderseite line(-10, 30, -65, 30); line(-65, 30, -65, 85); line(-65, 85, -10, 85); line(-10, 85, -10, 30); triangle(-65 , 30, -50, -30,-10,30); popStyle(); // restores the prior settings return; // beendet die if schleife } //zeichne strasse int x; //x ist eine ganzzahl int y; // y ist eine ganzzahl int count = (int)random(1,7); // count ist eine ganzzahl darin ist ein ganzzahlrandom zwischen 1 und 8 festgelegt for(int i = 0; i < count; i++) //for schleife: i = startwert, muss kleiner als der count wert sein, i wird immer um eins nach oben gezählt { x = (int)random(-100,100); // x = ganzzahl random (zwischen -100 und 100 y = -(int)random(10,150); // eine minus ganzzahl die sich per random in den werten zwischen 10 und 150 bewegt strokeWeight(random(2,8)); //line(0,0,x,y); // linie hat die werte x1=0, y1=0, x=wie oben mit random definiert, y=wie oben mit random definiert triangle(-85 , 75, x, y,-30,75); pushStyle(); fill(0,0,0,50); //House hinterseite line(-30, 20, -85, 20); line(-85, 20, -85, 75); line(-85, 75, -30, 75); line(-30, 75, -30, 20); triangle(-85 , 20, -50, -30,-30,20); //verbindungen line(-85,20,-65,30); line(-85, 75,-65, 85); line(-30, 75,-10, 85); line(-30, 20, -10, 30); //triangle linke seite triangle(-85 , 20, -50, -30,-65,30); //triangle rechte seite triangle(-30 , 20, -50, -30,-10,30); //hous vorderseite line(-10, 30, -65, 30); line(-65, 30, -65, 85); line(-65, 85, -10, 85); line(-10, 85, -10, 30); triangle(-65 , 30, -50, -30,-10,30); popStyle(); pushMatrix(); //the current coordinate style wird gespeichert translate(x,y); // die fläche wird um den wert x,y random verschoben scale(random(.10,.95)); // das objekt wird mit einem random zwischen 0.3 und 0.95 verkleinert wurzel(tiefe-1); //der wert wurzel wird um minus 1 gezählt popMatrix(); } }