Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
Baue deine Kollisionsabfrage doch wieder ein.
Das abs entfernt das Vorzeichen, sodass das Ergebnis deiner Subtraktion niemals negativ sein kann.
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
Was soll das jetzt. Hat er denn immer soviele Raumschiffe wie Kugeln?
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
Du prüfst ja auch nicht (überall) ob du überhaupt auf die Kugel zugreifen darfst.
Setzt einen Breakpoint, schau dir an, wo das was du dir überlegt hast nicht mehr mit dem übereinstimmt, was passiert und ändere das, was falsch läuft ab.
So programmiert man.
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
Die Meldung ist doch eindeutig. Du kannst nicht auf eine Laufvariable einer FOR-Schleife außerhalb der Schleife zugreifen.
Also entweder den Wert in einer anderen Variablen abspeichern oder die zweite Schleife innerhalb der ersten notieren? Das kommt darauf an, was man machen will.
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
Dafür muss man erstmal verstehen, was du überhaupt machen willst und das muss ganz anders aufgebaut werden.
Der erste Ansatz wäre erstmal nur einen einzigen Timer für alles zubenutzen.
Dann musst du eben jeweils für jedes Objekt nachschauen, ob es mit einem anderen kollidiert.
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
Ok, jetzt sehe ich was du meinst.
So geht das aber nicht! Dann musst du dein Konzept umstellen. Du kannst nicht in einer Routine eine Schleife haben und in einer anderen auf deren Zählwert zugreifen. So kann man nicht programmieren.
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
Ich verstehe deine Probleme nicht.
Der Compiler sagt, dass die Laufvariable einer FOR-Schleife immer lokal deklariert sein muss.
Also deklariere dein i und r lokal, dort wo deine Schleifen sind und fertig.
Mach es doch nicht kompilzierter als es ist.
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
Schau dir einfach mal die Warnungen an, die dein Compiler dir ausspuckt und beheben diese. Dann läuft dein Programm einwandfrei.
Edit: Globale Variablen sind böse und so wenig wie nötig zu verwenden!
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
:
If (abs(Raumschiff.xCoord-Kugel.xCoord)<1) and
(abs(Raumschiff.yCoord-Kugel.yCoord)<1) then
begin
Raumschiff.Free;
Raumschiff:=nil;
Abgeschossen := Abgeschossen+1;
end;
:
Forum: Object-Pascal / Delphi-Language
Delphi
by omata,
10. Jan 2010
- Debuggen? -> Welche Zeile?
- Mit Destroy gibt man keine Objekte frei.