|
Inhalt
Vorwort
Vorbereitungen
treffen...
Variablen
und eine Funktion zur Bewegung
Die
KI
Feinschliff
Die KI
![]()
In Schritt Nummer 3 haben wir eine Funktion geschrieben die es uns ermöglicht
unser Tier zu bewegen. Und das wollen wir jetzt auch entlich ansteuern. Zuerst
brauchen wir irgendeine Zahl. Diese gibt dann wieder ob sich unsern Tierchen
überhaupt bewegen will. Dazu geben wir im Aktions-Fenster das hier ein:
ran = random(5); So. Jetzt haben wir irgendeine
Zahl deren maximaler Wert 5 ist. Mit der Zahl können wir einiges anfangen.
Wenn unser Tier grad Lust hat latscht es irgendwo hin. Dazu schreiben wir den
folgenden Text ins Aktions-Fenster:
if (ran >= 2) {
}
Mit einer großen Wahrscheinlichkeit rennt unser Tier jetzt rum. Doch wie soll es rennen? In welche Richtung? Zwischen die geschweiften Klammern beim if-Tag kommt jetzt dieser Code:
ran2 = random(5);
if (sametimer == 10) {
sametimer = 0;
ran2 = 1;
}
if (ran2>3 || sametimer>0) {
sametimer++;
bewegen(lastr);
}
if (ran2 == 2) {
ran2 = random(7);
if(ran2>=6) {
rind = 15;
}
if(ran2 == 5) {
rind = -15;
}
if(ran2 == 4) {
rind = 10;
}
if (ran2 == 3) {
rind = -10;
}
if (ran2 == 2) {
rind = 20;
}
if (ran2<=1) {
rind = -20;
}
}
if (ran2<=1) {
ran2 = random(3);
if (lastr<0) {
zind = -1;
} else {
zind = 1;
}
if (ran2 == 3) {
rind = 10*zind;
}
if (ran2 == 2) {
rind = 20*zind;
}
if (ran2<=1) {
rind = 20*zind;
}
}
if (sametimer == 0) {
lastr = current_r+rind;
bewegen(lastr);
}
Zuerst lassen wir uns eine Zahl errechnen deren maximaler Wert 5 sein soll.
Dann gucken wir ob sametimer auf 10 steht. Wenn dies der Fall ist wird sametimer
auf 0 zurückgestellt und ran2 bekommt den Wert 1.
Nun gucken wir ob ran2 größer als 3 oder sametimer größer
als 0 ist. Sobald dies zutrifft wird sametimer um 1 erhöt und unser Tier
wird mit in die selbe Richtung bewegt wie letztes mal. Wenn ran2 genau 2 entspricht
so wird zuerst eine neue Zahl berrechnet. Deren maximaler Wert soll 7 sein.
Nun beginnt eine Art einschachtelung.
Egal wie der Wert von ran2 ist, der Variable rind wird ein Wert zugewiesen.
Jetzt gucken wir noch ob ran2 kleiner oder gleich 1 ist. Sollte dies der Fall
sein wird wieder eine Zahl, deren Maximalwert 3 ist, errechnet. Wenn der Wert
des letzten Winkels kleiner als 0 ist so wird zind auf -1 gestellt, andernfalls
auf 1. Nun weisen wir rind einen Wert zu. Das sieht genauso aus wie ein paar
zeilen höher und es ist eigentlich auch das selbe. Und wenn sametimer jetzt
noch 0 ist wird lastr mit dem Winkel definiert den wir jetzt gerade benutzen
und schließlich alles bewegt. Man sollte darauf achten das wir hier drei
Fälle haben.
1.) Unser Tier soll zehn mal in die selbe Richtung laufen (hierfür ist
der sametimer verantwortlich).
2.) Das Tier läuft in irgend eine Richtung. D.h. zu dem derzeitigen Winkel
(current_r) wird ein Wert zwischen 20 und -20 addiert.
3:) Es bewegt sich zwar nicht genau gleich aber in die selbe Richtung. Bzw.
wenn es sich vorher nach Links bewegt hat, beweget es sich jetzt auch nach links.
Jetzt fragt man sich natürlich "Wieso habe ich nicht einfach bewegen(random(360))
benutzt? Das hätte doch viel weniger Aufwand gemacht." Die Antwort
ist ganz leicht. Wir diesen Aufwand nur gemacht, damit sich das Tier auch vom
Fleck bewegt. Denn sonst geht es aufeinmal in diese Richtung und dann weider
in die andere usw. Außerdem soll es ja wenigstens ein bisschen intelligent
werden. Wenn man das ganze jetzt in Flash exportiert bewegt sich unser Tier
auch schon eigentlich recht toll. Manchmal macht es zwar noch rukartige Bewegungen,
doch diese sind nur noch sehr gering, dank vielen Variationen die den Bewegungsradius
einschränken.
![]()
![]()
![]()