Simulation einer KI in Flash

Thema:
Simulation einer KI in Flash
Description:
Ein Tier soll sich selbst in einer gegebenen Umgebung bewegen.
Keywords:
Flash, KI, Intelligenz, Roboter, Simulation
Author:
Joa Ebert
Date:
30.12.2001
Doc-ID:
51-003
URL:
http://www.flashworker.de/tutorial/51/003.html
Version:
1.0
Änderungen:
keine
Anforderungen:
Flash 5
Vorkenntnisse:
Flash Grundkentnisse
Gesunder Menschenverstand
Download:
PC: "flash_ki.zip", 25 kB

Inhalt
  Vorwort
  Vorbereitungen treffen...
  Variablen und eine Funktion zur Bewegung
  Die KI
  Feinschliff



Variablen und eine Funktion zur Bewegung

Zuerst legen wir mal ein paar Variabelen fest mit denen wir Geschwindigkeit u.Ä. definieren.

if (speed == null) { 
  speed = 2; 
  sametimer == 0; 
  zind = null; 
  rind = null; 
  lastr = null;
} 
current_r    = getProperty("/tier",_rotation);    

speed gibt die Geschwindigkeit in Koordinaten an. D.h. unser Tier bewegt sich um zwei Koordinaten in dem Koordinatensystem von Flash weiter.
sametimer wird später benötigt damit sich unser Tier für eine gewisse Zeit in die selbe Richtung dreht. aber nicht zu lange! zind dient hier nicht zum sog. Z-Sorting sondern
wird benötigt um später zu definieren ob sich das Tier nach links oder rechts bewegt. rind dient dazu einen Wert zu dem derzeitigen _rotation-Wert zu adieren. So entsteht dann eine Drehung.
lastr speichert den letzten _rotation-Wert den wir benutzt haben.
curren_r hält für uns den derzeitigen _rotation-Wert fest. Da wir ja weder ein Spiel programmieren oder Gefühle einbauen
wollen (was sicherlich noch interessanter wäre, aber nicht in eine art Einführung passt) brauchen wir nicht mehr Variablen.
Jetzt sollten wir uns dieser Funktion zuwenden:

function bewegen(rotation) { 
  current_x = getProperty("/tier",_x);    
  current_y = getProperty("/tier",_y);    
  new_x = speed*Math.cos(Math.PI/180*rotation);    
  new_y = speed*Math.sin(Math.PI/180*rotation);    
  setProperty("/tier",_x,current_x+new_x);
  setProperty("/tier",_y,current_y+new_y);    
  setProperty("/tier",_rotation,rotation);    
}

Der Wert rotation wird dann benötigt wenn wir angeben wie weit das Tier sich drehen soll. current_x und current_y gebn die derzeitigen Koordinaten für uns wieder.
Bei new_x und new_y wird es dann schon wider einen Happen schwieriger. Aber da ich denke das die meißten wissen was Sinus und Cosinus sind. Die Formel PI geteilt durch
180 mal einen Winkel dient zum umrechnen von Radianten in Grad. Denn Flash berechnet den (Co)Sinus in Radianten. Bei setProperty(...) werden dem Tier dann die neuen Koordinaten und der Winkel
zugewiesen. Schon habe wir eine Funktion geschrieben die es uns ermöglicht unser Tier in einem Ramen von 0-360° zu bewegen.
Zum testen könnte man jetzt einfach in das Aktionsfenster noch bewegen(0); schreiben und unser Tier bewegt sich geradeaus vorwärts. Doch jetzt kommen wir zum spannenden Teil.




Zurück     Weiter