Forum: Multimedia
Delphi
by tigerman33,
9. Okt 2005
Da solltest du dich mal mit Vektoren, Tangenten, und dem Kreuzprodukt beschäftigen. Bist du sicher, dass der Aufwand gefordert ist?
Forum: Multimedia
Delphi
by tigerman33,
9. Okt 2005
Beim Ball zeichnen machst du doch eigentlich zwei Teilschritte: Du lässt ihn an der alten Position verschwinden und zeichnest ihn an der neuen Position neu. Ball verschwinden heißt also einfach, Ball löschen ohne ihn anschließend neu zu zeichnen. :roll:
Forum: Multimedia
Delphi
by tigerman33,
8. Okt 2005
Indem du prüfst, ob die x- und y-Koordinaten des Balls denen des Lochs entsprechen:
if (xBall = xHole) and (yBall = yHole) then
...
Forum: Multimedia
Delphi
by tigerman33,
8. Okt 2005
Hier liegt der Hase im Pfeffer:
Das bedeutet:
Wenn der Ball den rechten Rand berührt (x > 759) und
sich gleichzeitig nach links bewegt (xMove < 0) dann
setze die Bewegungsrichtung des Balles auf "links"
Was ist daran falsch? Um abzuprallen, muss sich der Ball ja vorher nach rechts bewegt haben. Richtig wäre also:
Forum: Multimedia
Delphi
by tigerman33,
7. Okt 2005
Die repeat..until Schleife:
repeat
<Anweisungen>
until <Bedingung>
Das wiederholt die Anweisungen solange, bis die Abbruchbedingung erfüllt ist, mindestens jedoch einmal (die Abbruchbedingung wird ja erst am Ende überprüft). Ähnlich funktioniert die while Schleife:
while <Bedingung> do
Anweisung
Forum: Multimedia
Delphi
by tigerman33,
7. Okt 2005
Du berechnest die Position des Balles in der repeat..until-Schleife. Hattet ihr Schleifen schon im Unterricht? Wenn nicht, sieh dir mal while,repeat,for an. Damit wird der Ball solange bewegt, bis eine von dir vorgegebene Abbruchbedingung eintritt. Die Berechnung der Position (bzw. in meinem Beispiel erst mal ja nur der x-Koordinate) des Balles geschieht in der Zeile x := x + xMove
Forum: Multimedia
Delphi
by tigerman33,
7. Okt 2005
Du speicherst dir die aktuelle x- und y-Bewegungsrichtung. Dann überprüfst du, ob der Ball gerade die Wand berührt, wenn ja, setzt du die Bewegungsrichtung entsprechend um. Als Beispiel (für die x-Richtung):
var xMove: integer;
x,y: integer;
begin
// Initialisieren:
xMove := +10;
x := 100;
y := 100;