Zitat von
FlorianK:
Ich würde es so machen:
Delphi-Quellcode:
procedure stoss;
var ball: array [1..30] of tball;
for a := 0 to High(BallArray)-2 do
begin
for b := a+1 to High(BallArray)-1 do
begin
if ball[a].Left+ball[a].Width=ball[b].Left then // Wenn es in tball Left, Top, Width und Height gibt...
begin
//(...X-Abstoßung...)
end;
if ball[a].Top+ball[a].Height=ball[b].Top then // Wenn es in tball Left, Top, Width und Height gibt...
begin
//(...Y-Abstoßung...)
end
end;
end;
Florian K.
Sorry, aber völliger Quatsch
1) So wie das Array deklariert ist gibts dirket eine Zugriffsverletzung, da ich von einem null-basierten Array ausging (array[0..max] oder dynamisch).
2) Die Klasse TBall, so wie sie implemietert ist, hat kein "left" oder "top". Du gehst von TShapes aus, und das ist a) saumäßiger Stil, und b) unhandlich. Wie im Programm ist es am besten gelöst: Mittelpunkt und Radius beschreiben einen Ball.
Die reine Technik mit der die Kollision überprüft wird ist okay, nur muss die Prozedur wie Toxman es schrieb universeller gemacht werden, so dass sie beliebige Instanzen von TBall entgegen nehmen kann. Und das hat Toxman ja schon erledigt
Grundsätzlich @Carolin:
Die Formatierung deines Codes ist gelinde gesagt
grausam. Macht das euer Lehrer auch so!?
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel