![]() |
Timer / Bomberman
hallo... ich soll für schule (info-projekt) ein 2-player bomberman programmieren... meine frage: wie kann ich die bomben zeitverzögert explodieren lassen?`
bin relativer anfänger in delphi.. würde mich über ne ausführliche antwort freuen... danke schon mal... der eif |
Re: Timer / Bomberman
hallo,
ich würd da einen game-loop aufbauen:
Delphi-Quellcode:
zum Bomben checken:
while Running do
begin CheckBombs; //schauen ob eine Bombe explodieren muss CheckKeyStates; //schauen ob ein Key gedrückt ist und du einen Player laufen lassen musst Render; //neu malen end;
Delphi-Quellcode:
Für die Bomben kannst du eine einfache Liste benutzen, z.B. TList, und einen Typ wie den:
for i := Bombs.Count-1 downto 0 do
begin if Bombs[i].ExplosionStamp < GetTickCount then begin DoExplosion(Bombs[i]); Bombs.Delete(i); end; end;
Delphi-Quellcode:
Wenn die Bombe gelegt wird, musst du Explosionstamp natürlich setzen:
type
PBomb: ^TBomb; TBomb = record Strength: Integer; ExplosionStamp: Cardinal; end;
Delphi-Quellcode:
Sonst noch irgendwo probleme?
var NewBomb: PBomb;
New(NewBomb); Bombs.Add(NewBomb); NewBomb.Strength := x; NewBomb.ExplosionStamp := GetTickCount + BombTimer; //BombTimer: Cardinal, Millisekunden Du kannst natürlcih auch mit ![]() |
Re: Timer / Bomberman
joa... danke erstmal... werd mal guggn was ich damit anfangen kann.. wie gesagt... bin ein anfänger ;) ... ich probiers einfach mal...
danke... der eif |
Re: Timer / Bomberman
no Problem.
btw: deine Bomben sollten vielleicht noch ein "IsExploded"-Flag (Boolean-Feld) bekommen, denn wenn es Kettenreaktionen etc. gibt, könntest du in deiner for-schleife auf Index-Probleme stoßen. Sprich:
Delphi-Quellcode:
Im "DoExplosion" würdest du dann verbundene Bomben gleich mit explodieren lassen und nur das "IsExploded"-Flag setzen.
for i := Bombs.Count-1 downto 0 do
begin if Bombs[i].IsExploded then Bombs.Delete[i] else if Bombs[i].ExplosionStamp < GetTickCount then begin DoExplosion(Bombs[i]); Bombs.Delete(i); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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