Macht ihr mich grad dumm?
Das Problem ist, dass der Quelltext zum Bombezünden so komplex ist, dass ich das nicht alles mitposten will, vor allem auch, weil ich mich bestimmt dafür schämen müsste, weils sicher sehr viel einfacherer geht. Aber ich versuche, euch den ganzen Code verkürzt zu posten.
Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
var
i, e: Integer;
gesprengt, item : ARRAY[1..4] of Boolean;
itemx, itemy : Array[1..4] of Integer;
zeit, x_wert, y_wert, Start : Integer;
begin
Label5.Caption := IntToStr(Bomben.Count);
for i := 0 to Bomben.Count - 1 do //Alle Bomben die es gibt durchgehen
begin
{...}
Spieler1.bombegelegt := Spieler1.bombegelegt - 1;
If Spieler1.bombegelegt < 0 Then Spieler1.bombegelegt := 0;
If Spieler1.bombegelegt < Spieler1.laufzahl_bombe Then Spieler1.zuendet := 0;
end;
Label1.Caption := IntToStr(Spieler1.bombegelegt);
If (Spieler1.bombegelegt = 0) Then
begin
Bomben.Delete(i);
end;
end;
Also, an sich lösche ich die Bomben erst aus der Liste, wenn sich keine Bombe mehr auf dem Spielfeld befindet. Denn die Variable bombegelegt sagt, wieviele Bomben sich auf dem Spielfeld noch befinden. Das Problem ist nur, dass das mit dem bombegelegt nicht mehr so funktioniert, wie ursprünglich geplant. Naja.
Zitat von
wicht:
Löscht du eventuell Bombenobjekte aus der Liste mit Hilfe einer Schleife?
Das könnte bei... unsachgemäßer Vorgehensweise nämlich das mit dem Listenindex erklären
.. Ein herrlicher Fehler den glaube ich fast jeder schonmal gemacht hat.
Ja, das mache ich, wie du siehst. Ich hab aber keine Ahnung, ob ich das unsachgemäß mache. Naja, sagt einfach mal bescheid. Wenn ihr noch mehr wollt, sagt bescheid.
Liebe Grüße,
Simon =)