Autor Beitrag
Pyr0cracker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 164

Win XP, Ubuntu 8.04, openSUSE 11.0
Delphi 7 Personal
BeitragVerfasst: Do 20.03.03 14:47 
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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 156



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 164

Win XP, Ubuntu 8.04, openSUSE 11.0
Delphi 7 Personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 156



BeitragVerfasst: Fr 21.03.03 19:05 
du solltest es so machen:

z.B
ausblenden 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?