![]() |
DelphiX - Monster Synchron-Laufen verhindern
Ich habe eine Klasse TMonster.
TMonster hat eine prozedur DoMove. Das Problem ist : Wenn ich mehrere TMonsters (Monster1,Monster2,...) auf dem Spielfeld habe laufen beide Monster genau gleich ... Wenn einer nach oben läuft läuft der andere auch nach oben... Bei einer Kollision soll das Monster eine andere Richtung wählen. Wenn ein Monster gegen eine Wand knallt sucht es sich eine andere Richtung. Das andere Monster läuft dann auch in diese andere Richtung, auch wenn es nirgendwo gegengestoßen ist. Wie mache ich das jedes Monster "seinen eigenen Weg geht" ? Die Bewegungs-Procedure :
Delphi-Quellcode:
Die Collisions-Procedure :
procedure TMonster.DoMove(MoveCount: Integer);
begin inherited DoMove(MoveCount); if Richtung = 1 then begin X:=X+1; AnimCount := 3; AnimLooped := true; AnimSpeed := 100/1000; AnimStart := 3; end; if Richtung = 2 then begin X:=X-1; AnimCount := 3; AnimLooped := true; AnimSpeed := 100/1000; AnimStart := 9; end; if Richtung = 3 then begin Y:=Y-1; AnimCount := 3; AnimLooped := true; AnimSpeed := 100/1000; AnimStart := 0; enD; if Richtung = 4 then begin Y:=Y+1; AnimCount := 3; AnimLooped := true; AnimSpeed := 100/1000; AnimStart := 6; end; Collision; end;
Delphi-Quellcode:
procedure TMonster.DoCollision(Sprite: TSprite; var Done: Boolean);
begin randomize; if (Sprite is TWand) and (Richtung = 1) then begin X:=X-2; Richtung := random(4) +1; end else if (Sprite is TWand) and (Richtung = 2) then begin X:=X+2; Richtung := random(4)+1; end else if (Sprite is TWand) and (Richtung = 3) then begin Y:=Y+2; Richtung := random(4)+1; end else if (Sprite is TWand) and (Richtung = 4) then begin Y:=Y-2; Richtung := random(4)+1; end; end; |
Re: DelphiX - Monster Synchron-Laufen verhindern
Nur ne Frage:
Sind "Richtung", "AnimCount", "AnimLoop" usw. Variablen oder Felder? :oops: |
Re: DelphiX - Monster Synchron-Laufen verhindern
Richtung : Integer (Zur bestimmung in welche Richtung das Monster läuft)
und die Anim-sachen gehören zu jedem Sprite dazu. Die sind für die Animation da ... Aber das ist eigentlich nicht so wichtig ... |
Re: DelphiX - Monster Synchron-Laufen verhindern
Es sieht für mich so aus, als hättest du die Variablen Richtung,... nicht in der Klasse TMonater sondern irgendwo anders deklariert. Du must, damit jedes "Monster" seine eigenen Variablen hat diese Variablen direkt unter private deklarieren.
Delphi-Quellcode:
{in etwa so...}
TMonster = class({...}) private //hier alle Variablen des Monsters Richtung : Integer; Geschwindugkeit : Integer; {...} public procedure doMove({...}); end; |
Re: DelphiX - Monster Synchron-Laufen verhindern
Ok danke ich werds mal ausprobieren ...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz