|
Registriert seit: 8. Jan 2010 31 Beiträge Delphi 7 Personal |
#34
![]() Debugge die Schleife und guck dir bei jedem Durchlauf den Index an, der gelöscht werden soll.
![]() Bomben.Delete(idx) // Hier Breakpoint drauf setzen
![]() Das was Sir Rufo gepostet hat sieht okay aus und die Rückwärtsschleife benutze ich immer, funktioniert auch. Was meinst du im vorletzten Post mit "allgemeinen Schleife"? Wenn du zwei Schleifen über die selbe Liste hast und in der inneren Schleife Elemente löscht könnte das auch Essig sein.
Wenn du dich nicht mit dem Debugger auseinandersetzt oder den Quelltext postest wird es kompliziert dir zu helfen, jedenfalls was mich betrifft. ![]() Ansonsten, das Beispiel von Sir Rufo was er gerade nochmal erwähnte funktioniert einfach nur. Und "ist zu hoch für mich" bringt da nichts, versuche das zu verstehen und frage doch gegebenenfalls nochmal nach, wenn du etwas bestimmtes nicht verstehst. Weil genau das, was in dem Beispiel ist, willst du haben.
Ich habe jetzt versucht, das ganze auf mein Programm zu übertragen. Dabei ist rausgekommen, dass, wenn er einmal in der While-Do-Schleife drin ist, da nie wieder rauskommt. Meine Fragen zu Sir Rufos Programm: Bei dir ändert sich der Index nicht. Wie kommt er da wieder aus der Schleife raus? Dadurch, dass sich Objektliste.Count ändert? Bei mir zumindest scheint das irgendwie nicht zu funktionieren. Eine weitere Frage: Was bewirkt das Inc(Index)? Das hab ich noch nie gesehen und ich habe keine Ahnung, was das bewirkt. So. Und damit ihr auf eure Kosten kommt und mir dadurch vielleicht weiterhelfen könnt, hier der gesamte Quelltext im Timer:
Delphi-Quellcode:
Sicherlich könnte man das in 20 zeilen schreiben, nur weiß ich nicht, wie. Sagt einfach mal was dazu. Dass es einfacherer geht, ist eindeutig...
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, explosion : Integer; loesche : Boolean; begin Label5.Caption := IntToStr(Bomben.Count); i := 0; While i < Bomben.Count do //Alle Bomben die es gibt durchgehen begin Application.ProcessMessages; explosion := TBombe(Bomben[i]).ExplodierZeit; if (GetTickCount > explosion) Then//Zeit erreicht? begin //Boom, Bombe ist hochgegangen explosion := GetTickCount + 10000; For zeile := 1 To 11 Do For spalte := 1 To 11 Do begin links := (spalte - 1) * 65; oben := (zeile - 1) * 65; If ((links <= TBombe(Bomben[i]).Mitte.X) And (links + breite >= TBombe(Bomben[i]).Mitte.X) And (oben <= TBombe(Bomben[i]).Mitte.Y) And (oben + hoehe >= TBombe(Bomben[i]).Mitte.Y)) Then begin x_wert := spalte; y_wert := zeile; BREAK; end; end; Label4.Caption := 'Ich bin durch!'; TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert))).Stretch := False; TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert))).Proportional := False; For zaehler := 1 To 4 Do gesprengt[zaehler] := False; For zaehler := 1 To Spieler1.reichweite Do begin If (x_wert + zaehler > 0) And (x_wert + zaehler < 12) Then begin If mauer[y_wert, x_wert + zaehler] = 6 Then gesprengt[1] := True; If (gesprengt[1] = False) Then begin If ((mauer[y_wert,x_wert + zaehler] = 1) Or (mauer[y_wert,x_wert + zaehler] = 2) Or (mauer[y_wert,x_wert + zaehler] = 3) Or (mauer[y_wert,x_wert + zaehler] = 4)) Then gesprengt[1] := True; Case mauer[y_wert, x_wert + zaehler] of 1: begin item[1] := True; itemx[1] := x_wert + zaehler; itemy[1] := y_wert; end; 2: begin item[2] := True; itemx[2] := x_wert + zaehler; itemy[2] := y_wert; end; 3: begin item[3] := True; itemx[3] := x_wert + zaehler; itemy[3] := y_wert; end; 4: begin item[4] := True; itemx[4] := x_wert + zaehler; itemy[4] := y_wert; end; end; //If ((mauer[y_wert,x_wert + zaehler] = 0) Or (mauer[y_wert,x_wert + zaehler] = 5)) Then addon[y_wert,x_wert + zaehler] := 0; mauer[y_wert,x_wert + zaehler] := 0; TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Picture.LoadFromFile('Bilder&Animationen\rot.bmp'); If (((Spieler1.p1.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler1.p1.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler1.p1.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler1.p1.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler1.p2.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler1.p2.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler1.p2.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler1.p2.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler1.p3.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler1.p3.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler1.p3.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler1.p3.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler1.p4.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler1.p4.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler1.p4.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler1.p4.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top))) Then begin ShowMessage(Form1.name1 + ' ist tot! ' + Form1.name2 + ' hat gewonnen!'); Form1.Visible := True; Form1.Panel3.Visible := True; tot := True; Form2.Close; BREAK; end; If (((Spieler2.p1.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler2.p1.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler2.p1.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler2.p1.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler2.p2.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler2.p2.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler2.p2.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler2.p2.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler2.p3.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler2.p3.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler2.p3.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler2.p3.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler2.p4.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler2.p4.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler2.p4.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler2.p4.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top))) Then begin ShowMessage(Form1.name2 + ' ist tot! ' + Form1.name1 + ' hat gewonnen!'); Form1.Visible := True; Form1.Panel3.Visible := True; tot := True; Form2.Close; BREAK; end; end; end; If (y_wert + zaehler > 0) And (y_wert + zaehler < 12) Then begin If mauer[y_wert + zaehler, x_wert ] = 6 Then gesprengt[2] := True; If gesprengt[2] = False Then begin If ((mauer[y_wert + zaehler,x_wert] = 1) Or (mauer[y_wert + zaehler,x_wert] = 2) Or (mauer[y_wert + zaehler,x_wert] = 3) Or (mauer[y_wert + zaehler,x_wert] = 4)) Then gesprengt[2] := True; Case mauer[y_wert + zaehler,x_wert] of 1: begin item[1] := True; itemx[1] := x_wert; itemy[1] := y_wert + zaehler; end; 2: begin item[2] := True; itemx[2] := x_wert; itemy[2] := y_wert + zaehler; end; 3: begin item[3] := True; itemx[3] := x_wert; itemy[3] := y_wert + zaehler; end; 4: begin item[4] := True; itemx[4] := x_wert; itemy[4] := y_wert + zaehler; end; end; //If ((mauer[y_wert + zaehler, x_wert] = 0) Or (mauer[y_wert + zaehler, x_wert] = 5)) Then addon[y_wert + zaehler, x_wert] := 0; mauer[y_wert + zaehler, x_wert] := 0; TImage(FindComponent('Feld' + IntToStr(y_wert + zaehler) + '_' + IntToStr(x_wert))).Picture.LoadFromFile('Bilder&Animationen\rot.bmp'); If (((Spieler1.p1.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler1.p1.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler1.p1.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler1.p1.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler1.p2.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler1.p2.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler1.p2.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler1.p2.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler1.p3.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler1.p3.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler1.p3.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler1.p3.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler1.p4.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler1.p4.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler1.p4.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler1.p4.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top))) Then begin ShowMessage(Form1.name1 + ' ist tot! ' + Form1.name2 + ' hat gewonnen!'); Form1.Visible := True; Form1.Panel3.Visible := True; tot := True; Form2.Close; BREAK; end; If (((Spieler2.p1.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler2.p1.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler2.p1.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler2.p1.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler2.p2.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler2.p2.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler2.p2.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler2.p2.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler2.p3.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler2.p3.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler2.p3.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler2.p3.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler2.p4.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler2.p4.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler2.p4.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler2.p4.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top))) Then begin ShowMessage(Form1.name2 + ' ist tot! ' + Form1.name1 + ' hat gewonnen!'); Form1.Visible := True; Form1.Panel3.Visible := True; tot := True; Form2.Close; BREAK; end; end; end; Spieler1.BringToFront; end; For zaehler := 1 DownTo -Spieler1.reichweite Do begin If (x_wert + zaehler > 0) And (x_wert + zaehler < 12) Then begin If mauer[y_wert, x_wert + zaehler] = 6 Then gesprengt[3] := True; If (gesprengt[3] = False) Then begin If ((mauer[y_wert,x_wert + zaehler] = 1) Or (mauer[y_wert,x_wert + zaehler] = 2) Or (mauer[y_wert,x_wert + zaehler] = 3) Or (mauer[y_wert,x_wert + zaehler] = 4)) Then gesprengt[3] := True; Case mauer[y_wert, x_wert + zaehler] of 1: begin item[1] := True; itemx[1] := x_wert + zaehler; itemy[1] := y_wert; end; 2: begin item[2] := True; itemx[2] := x_wert + zaehler; itemy[2] := y_wert; end; 3: begin item[3] := True; itemx[3] := x_wert + zaehler; itemy[3] := y_wert; end; 4: begin item[4] := True; itemx[4] := x_wert + zaehler; itemy[4] := y_wert; end; end; //If ((mauer[y_wert,x_wert + zaehler] = 0) Or (mauer[y_wert,x_wert + zaehler] = 5)) Then addon[y_wert,x_wert + zaehler] := 0; mauer[y_wert,x_wert + zaehler] := 0; TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Picture.LoadFromFile('Bilder&Animationen\rot.bmp'); If (((Spieler1.p1.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler1.p1.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler1.p1.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler1.p1.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler1.p2.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler1.p2.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler1.p2.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler1.p2.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler1.p3.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler1.p3.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler1.p3.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler1.p3.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler1.p4.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler1.p4.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler1.p4.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler1.p4.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top))) Then begin ShowMessage(Form1.name1 + ' ist tot! ' + Form1.name2 + ' hat gewonnen!'); Form1.Visible := True; Form1.Panel3.Visible := True; tot := True; Form2.Close; BREAK; end; If (((Spieler2.p1.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler2.p1.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler2.p1.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler2.p1.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler2.p2.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler2.p2.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler2.p2.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler2.p2.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler2.p3.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler2.p3.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler2.p3.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler2.p3.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top)) Or ((Spieler2.p4.X < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Width) And (Spieler2.p4.X >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Left) And (Spieler2.p4.Y < TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Height) And (Spieler2.p4.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Top))) Then begin ShowMessage(Form1.name2 + ' ist tot! ' + Form1.name1 + ' hat gewonnen!'); Form1.Visible := True; Form1.Panel3.Visible := True; tot := True; Form2.Close; BREAK; end; end; end; If (y_wert + zaehler > 0) And (y_wert + zaehler < 12) Then begin If mauer[y_wert + zaehler, x_wert ] = 6 Then gesprengt[4] := True; If gesprengt[4] = False Then begin If ((mauer[y_wert + zaehler,x_wert] = 1) Or (mauer[y_wert + zaehler,x_wert] = 2) Or (mauer[y_wert + zaehler,x_wert] = 3) Or (mauer[y_wert + zaehler,x_wert] = 4)) Then gesprengt[4] := True; Case mauer[y_wert + zaehler,x_wert] of 1: begin item[1] := True; itemx[1] := x_wert; itemy[1] := y_wert + zaehler; end; 2: begin item[2] := True; itemx[2] := x_wert; itemy[2] := y_wert + zaehler; end; 3: begin item[3] := True; itemx[3] := x_wert; itemy[3] := y_wert + zaehler; end; 4: begin item[4] := True; itemx[4] := x_wert; itemy[4] := y_wert + zaehler; end; end; //If ((mauer[y_wert + zaehler, x_wert] = 0) Or (mauer[y_wert + zaehler, x_wert] = 5)) Then addon[y_wert + zaehler, x_wert] := 0; mauer[y_wert + zaehler, x_wert] := 0; TImage(FindComponent('Feld' + IntToStr(y_wert + zaehler) + '_' + IntToStr(x_wert))).Picture.LoadFromFile('Bilder&Animationen\rot.bmp'); If (((Spieler1.p1.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler1.p1.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler1.p1.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler1.p1.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler1.p2.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler1.p2.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler1.p2.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler1.p2.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler1.p3.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler1.p3.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler1.p3.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler1.p3.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler1.p4.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler1.p4.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler1.p4.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler1.p4.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top))) Then begin ShowMessage(Form1.name1 + ' ist tot! ' + Form1.name2 + ' hat gewonnen!'); Form1.Visible := True; Form1.Panel3.Visible := True; tot := True; Form2.Close; BREAK; end; If (((Spieler2.p1.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler2.p1.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler2.p1.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler2.p1.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler2.p2.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler2.p2.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler2.p2.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler2.p2.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler2.p3.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler2.p3.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler2.p3.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler2.p3.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top)) Or ((Spieler2.p4.X < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Width) And (Spieler2.p4.X >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Left) And (Spieler2.p4.Y < TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top + TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Height) And (Spieler2.p4.Y >= TImage(FindComponent('Feld' + IntToStr(y_wert+ zaehler) + '_' + IntToStr(x_wert))).Top))) Then begin ShowMessage(Form1.name2 + ' ist tot! ' + Form1.name1 + ' hat gewonnen!'); Form1.Visible := True; Form1.Panel3.Visible := True; tot := True; Form2.Close; BREAK; end; end; end; Spieler1.BringToFront; end; //Bomben.Delete(i); //TBombe(Bomben[i]).Explosion.Play; SndPlaySound('explosion.wav', SND_ASYNC); TBombe(Bomben[i]).Visible := False; Delay(1000); TBombe(Bomben[i]).Fertig := True; //TBombe(Bomben[i]).Explosion.Close; For zaehler := -Spieler1.reichweite To Spieler1.reichweite Do begin If (x_wert + zaehler > 0) And (x_wert + zaehler < 12) And (mauer[y_wert,x_wert + zaehler] = 0) Then TImage(FindComponent('Feld' + IntToStr(y_wert) + '_' + IntToStr(x_wert + zaehler))).Picture.LoadFromFile('Bilder&Animationen\weiß.bmp'); If (y_wert + zaehler > 0) And (y_wert + zaehler < 12) And (mauer[y_wert + zaehler, x_wert] = 0) Then TImage(FindComponent('Feld' + IntToStr(y_wert + zaehler) + '_' + IntToStr(x_wert))).Picture.LoadFromFile('Bilder&Animationen\weiß.bmp'); Spieler1.BringToFront; end; If item[4] = True Then begin TImage(FindComponent('Feld' + IntToStr(itemy[4]) + '_' + IntToStr(itemx[4]))).Picture.LoadFromFile('Bilder&Animationen\Bombe_neu.jpg'); TImage(FindComponent('Feld' + IntToStr(itemy[4]) + '_' + IntToStr(itemx[4]))).Stretch := True; end; If item[2] = True Then begin TImage(FindComponent('Feld' + IntToStr(itemy[2]) + '_' + IntToStr(itemx[2]))).Picture.LoadFromFile('Bilder&Animationen\Schnell.bmp'); TImage(FindComponent('Feld' + IntToStr(itemy[2]) + '_' + IntToStr(itemx[2]))).Stretch := True; end; If item[3] = True Then begin TImage(FindComponent('Feld' + IntToStr(itemy[3]) + '_' + IntToStr(itemx[3]))).Picture.LoadFromFile('Bilder&Animationen\Knall.jpg'); TImage(FindComponent('Feld' + IntToStr(itemy[3]) + '_' + IntToStr(itemx[3]))).Stretch := True; end; Label3.Caption := 'Vorbei!'; Label4.Caption := ''; //TBombe(Bomben[i]).Fertig := True; //zahl := i; //ja := True; Spieler1.bombegelegt := Spieler1.bombegelegt - 1; If Spieler1.bombegelegt < 0 Then Spieler1.bombegelegt := 0; If Spieler1.bombegelegt < Spieler1.laufzahl_bombe Then Spieler1.zuendet := 0; If Spieler1.bombegelegt = 0 Then zeit := Bomben.Count - 1; If ((GetTickCount - TBombe(Bomben[i]).ExplodierZeit >= 4000) And (TBombe(Bomben[i]).Fertig = True)) Then begin TBombe(Bomben[i]).Fertig := False; Bomben.Delete(i); end Else Inc(i); //Bomben.Delete(i); {If (Spieler1.bombegelegt = 0) Then For e := zeit DownTo 0 Do begin Try Bomben.Delete(e); Except end; end;} end; end; Label1.Caption := IntToStr(Spieler1.bombegelegt); end; Liebe Grüße, Simon |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |