Entwickler-Ecke

Multimedia / Grafik - Simple KI (grafik1 geht um button herum zu grafik2)


Pyr0cracker - Do 20.03.03 14:47
Titel: Simple KI (grafik1 geht um button herum zu grafik2)
hi, ich wollte mal eine ganz simple ki machen, hab sie jetzt schon so weit fertig, das sie den spieler verfolgt, möchte aber noch das sie um eine dritte grafik herumgeht, habs schon probiert aber geht nich.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
if feind.top > stein.top then
  if feind.top < stein.top + stein.height then
    if feind.left > stein.left then
      feind.top:= feind.top-1;

if feind.top > stein.top then
  if feind.top < stein.top + stein.height then
    if feind.left < stein.left + stein.width then
      feind.top:= feind.top+1;

etc...
und noch für die ober- und unterseite.

danke schon mal,


Delphianer23 - Do 20.03.03 23:49

kannst du mir ein paar mehr allgemeine Infos geben.
Wie ist das Bewegen allgemein geregelt?
Ist es eine Art Schachfeld oder ist es "fließend" ?

Kannst du ein bißchen Code des Bewegens allgemein posten?


Pyr0cracker - Fr 21.03.03 10:55

fließend, ich bewege die grafik mit .top und .left +1 oder -1.
wie ich das mit "schachfeldern" funktioniert und wie ich das machen soll weiss ich gar nicht.


Delphianer23 - Fr 21.03.03 19:05

du solltest es so machen:

z.B

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
bewegung.x:=5,34;
bewegung.y:=-4,5;

feind.top:=feind.top+bewegung.y;

if feind.top > stein.top then 
  if feind.top < stein.top + stein.height then 
     if feind.left > stein.left then
       if feind.left < stein.left+ stein.width then 
         begin
          feind.top:= feind.top-bewegung.y; 
          // bewegung.x auf jeden Fall höher setzen
         end;

feind.left:=feind.left+bewegung.x

if feind.top > stein.top then 
  if feind.top < stein.top + stein.height then 
     if feind.left > stein.left then
       if feind.left < stein.left+ stein.width then 
          begin
           feind.left:= feind.left-bewegung.x; 
          //bewegung.y auf jeden Fall höher setzen
          end;

falls eine x oder y Bewegung den Körper in den Feind reinführt, wird
diese Rückgängig gemacht.
Natürlich ist dies sehr anfällig für Ecken. Außerdem könnte ein
Feind an einem Stück hängenbleiben, wenn das Ziel z.B genau vertikal
dazusteht. Deshalb die Erhöhung der x bzw y Bewegung.
Außerdem sollte der Feind nie z.b ganz am Anfang in einem Körper reingeraten. Sobald er in einem Drinnen wäre kommt er nie wieder raus.
Aber darauf kann man ja beim plazieren achten.

Ich hab nich so genau drüber nachgedacht. Vielleicht ist es Müll, aber auf
den ersten Blick müsste es funktionieren. Wie siehen denn die Steine
genau aus? SInd es Wände? SInd alle eckig? Haben sie unregelmäßige Kanten für den Feind?