19. September 2013
Heute habe ich eine ganz "einfache" Version von einem Wald geschrieben. Mit einem Mausclick erscheint er mit ca.40 Bäumen und zufällig definierten Farben und Grössen.
Mir wurde heute erst klar bewusst wie der Begriff "void" genutzt werden konnte. Mit ihm konnte ich ganz einfach verschiedene Bäume definieren und später einfach abrufen. Hier ein Bespiel von meinem ersten Baum:
void baum1()
{
float a=random(50,150); // zufaellige Farbe Blaetter
float b=random(1,15); //zufaellige Laenge Stamm
float c=random(1,10); //zufaellige Breite Stamm
x = random(0, 800); // Zufallstandort x Kor.
y = random(0, 800); // Zufallstandort y Kor.
rectMode(CENTER); // X Kor in die Mitte versetzten
fill(103, 93, 96);
rect(x, y+30, 7+b, 55, 7); // Stamm Baum 1
fill(5+a, 200, 30+a);
ellipse(x, y, 45+c, 45+c); // Blätter Baum 1
}
Sehr hilfreich fand ich die Funktion "rectMode(CENTER)" welche ich genutzt habe um den Stamm genau unter den Blättern zu platzieren, egal wie dick dieser wurde. Ohne diese Funktion, war die x-Achse immer links oben in der Figur und sobald diese dicker wurde, befand er sich nicht mehr in der Mitte der Blätter.
Cool war auch die "float" Funktion in welcher man zum Beispiel für "b" einen Rahmen zwischen 1-15 definieren kann. Wenn der Begriff "random" noch hinzugefügt wurde, wählte er eine zufällige Zahl zwischen 1-15 aus. Dieses "b" kann dann bei einer Farbe oder Grösse hinzugefügt werden, um diese bei jedem loop zufällig zu ändern.
Bsp:
float a=random(50,150); // zufaellige Farbe Blaetter
float b=random(1,15); //zufaellige Laenge Stamm
fill(5+a, 200, 30+a); // Farbe Blaetter Baum 1
ellipse(x, y, 45+c, 45+c); // Blaetter Baum 1
Was ich Morgen umbedingt noch finden will, ist wie die untersten Bäume in den Vordergrund gesetzt werden können um einen perspektivischen Effekt hinzubekommen. Eine Begrenzung für die Bäume und einen Himmel sollten auch noch möglich sein.
Hier der gesamte Code:
void setup()
{
size(800, 800);
noStroke();
smooth();
noLoop();
background(255);
}
float x;
float y;
float a=random(50,200);
void baum1()
{
float a=random(50,150); //random Farbe blaetter
float b=random(1,15); //random trunk laenge
float c=random(1,10); //random trunk breite
x = random(0, 800); // Zufallstandort x Kor.
y = random(0, 800); // Zufallstandort y Kor.
rectMode(CENTER);
fill(103, 93, 96);
rect(x, y+30, 7+b, 55, 7); // Stamm Baum 1
fill(5+a, 200, 30+a);
ellipse(x, y, 45+c, 45+c); // Blätter Baum 2
}
void baum3()
{
float a=random(50,150); //random Farbe blaetter
float b=random(1,20); //random trunk laenge
float c=random(1,10); //random trunk breite
x = random(0,800);
y = random(0,800);
rectMode(CENTER);
fill(100,73,77);
rect(x+30,y+40+b,20+c,60,4);
fill(5+a,142,30+a);
triangle(x,y,x+30,y-30,x+60,y);
fill(5+a,142,30+a);
triangle(x-10,y+20,x+30,y-10,x+70,y+20);
fill(5+a,142,30+a);
triangle(x-15,y+45,x+30,y+5,x+75,y+45);
}
void draw()
{
for (int i=0; i <= 40; i++)
baum1();
for (int i=0; i <= 10; i++)
baum3();
}
void mousePressed()
{
redraw();
}