Einzelnen Beitrag anzeigen

N4r0

Registriert seit: 7. Feb 2010
14 Beiträge
 
#6

Re: Space Invaders in Delphi5

  Alt 7. Feb 2010, 20:48
Zitat von himitsu:
Die Richtung stimmte schon.
Delphi-Quellcode:
Schuss1[j].Free;
for x:=j to high(Schuss1)-1 do
  Schuss1[x] := Schuss1[x+1];
SetLength(Schuss1,length(Schuss1)-1);
Außer daß du an der falschen Stelle angefangen hast.

j-1 ist ja der Schuß vor dem zu Löschenden ... du hattest also den Falschen entfernt
und wenn j der 1. Schuß ist (j=0), dann hast du den Grund für die Berreichsüberschreitung.
Der Fehler trifft in diesem Fall ebenfalls auf.

so siehts jetzt aus:

Delphi-Quellcode:
procedure TForm1.SchussTimerTimer(Sender: TObject);
var j,i,x : integer;
    collide : boolean;
begin

     collide := false;

     for j := High(Schuss1) downto 0 do
     begin

       for i := 1 to 21 do
       begin
         if (kollision(Schuss1[j],i) = true) and (Invader[i].Visible = true) then
         begin

            collide := true;
            Invader[i].visible := false;

            Schuss1[j].Free;
            for x:=j to high(Schuss1)-1 do
               Schuss1[x] := Schuss1[x+1];
            SetLength(Schuss1,length(Schuss1)-1);

         end
       end;

       if collide = false then
          Schuss1[j].top := Schuss1[j].top - 10;

       end;

end;
Angehängte Dateien
Dateityp: rar info_projekt_space_invaders__132.rar (256,0 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat