![]() |
DelphiX - Neustart des Spiels
hi,
ich hätt mal eine frage zu frägen. und zwar habe ich nen menüpunkt (Neues Spiel). wenn ich da drauf drücke, dann wollte ich: - schiff an untere mittlere position bringen (kein problem) - verschiedene variablen auf anfangswerte setzen (kein problem) - das array of TAsteroid leeren (wurde schonmal angesprochen).....folgendes problem: es gibt 3 verschiedene dinge die dabei rauskommen a) alles klappt super (neu zeichnen, feld leer...keinerlei fehlermessage); meistens wenn schon einige asteroiden durchgelaufen sind b) er bricht gleich Fehlermeldung ab......passiert meistens, wenn der erste asteroid noch im spiel ist c) siehe b) mitten im spiel, eventuell hintergrundbild nicht mehr da das problem warum geschiet a) und c) (is "zufällig" würde ich behaupten) warum bricht er gleich ab, wenn ich am anfang neu starte?
Delphi-Quellcode:
ich denke mal es liegt an diesem teil der procedure!
procedure TForm1.Neu1Click(Sender: TObject);
var i: byte; begin DXtimer.Enabled:=false; for i:=indexasteroid downto 0 do begin if tot[i]=false then asteroid[i-1].Dead; end; gruss haegaer |
Tach Haeger,
das könnte daran liegen das, wenn bei Deiner Schleife der Wert i=0 erreicht und der Asteroid noch am 'leben' (tot[0]=false) ist, auf dem Asteroid-Array mit -1 zugegriffen wird. Und ich könnte mir vorstellen das dieser nur von [0..x] definiert ist, d.h. Du löscht in dem Moment einen nicht existierenden Asteroid. arnoldo |
wirst lachen, wenn ich das nicht mache...also asteroid[i].dead; dann kommt erst recht ne fehlermeldung, die hängt hundert-pro damit zusammen, ich kanns mir nicht erklären, aber wenn ich [i-1] schreibe dann kommt die nicht mehr, und manchmal klappts, amnchmal nicht!?
hab da noch echt das grübeln. hatte mir das so gedacht: - gesamtes tot-array am anfang (form.create) auf true - beim erzeugen eines asteroiden tot[asteroidindex]:=false - wenn asteroid aus bild, oder kollidiert dann tot[asteroidindex]:=true; - nun die abfrage (siehe oben) hab ich da irgendwas vergessen? eigentlich net oder? edit: hab nochmal alles gemacht wie oben, keine fehler,eldung mehr, aber die asteroiden verschwinden einfahc net, fliegen an alter position weiter :firejump: gruss haegar |
ok ich habs, wahrscheinlich bekam ihm das downto nicht.
Lösung:
Delphi-Quellcode:
for i:=0 to indexasteroid do
begin if tot[i]=false then asteroid[i].Dead; end; gruss haegar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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