Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX - Neustart des Spiels (https://www.delphipraxis.net/3606-delphix-neustart-des-spiels.html)

Haegar 20. Mär 2003 18:02


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:
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;
ich denke mal es liegt an diesem teil der procedure!

gruss haegaer

arnoldo 20. Mär 2003 19:41

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

Haegar 20. Mär 2003 20:02

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

Haegar 20. Mär 2003 20:19

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