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?