![]() |
Re: Ball bewegen mit Canvas
was ist daran bitte falsch???Kann mal bitte einer meinen Quelltext so verändern , dass es fuktioniert , also der Ball soll rechts bei x=759 und links bei x=0 abprallen.Hier der Text:
Delphi-Quellcode:
danke!
y:=100;
Image1.Canvas.Pen.Color:=clgreen; Image1.Canvas.brush.Color:=clyellow; Image1.Canvas.Ellipse(x,y,x+50,y+50); Image1.Canvas.Pen.Color:=clwhite; Image1.Canvas.brush.Color:=clwhite; Image1.Canvas.Ellipse(x,y,x+50,y+50); x:=x+10; Image1.Canvas.Pen.Color:=clgreen; Image1.Canvas.brush.Color:=clyellow; Image1.Canvas.Ellipse(x,y,x+50,y+50); if (x >759) and (xmove<0) then xmove:=-10; x:=x+xmove; Image1.Canvas.Pen.Color:=clgreen; Image1.Canvas.brush.Color:=clyellow; Image1.Canvas.Ellipse(x,y,x+50,y+50) |
Re: Ball bewegen mit Canvas
Delphi-Quellcode:
zu
if (x >759) and (xmove<0) then
xmove:=-10;
Delphi-Quellcode:
if x >= 759 - 50 then xmove := -10;
if x <= 0 then xmove := +10; oder in der Initialisierung:
Delphi-Quellcode:
und in der Schleife:
// Variablen initialisieren
x := 0; y := 0; xmove := 10; ymove := 10; // wenn erwünscht die Ausgangsposition einzeichnen Image1.Canvas.Pen.Color := clGreen; Image1.Canvas.Brush.Color := clYellow; Image1.Canvas.Ellipse(x, y, x + 50, y + 50);
Delphi-Quellcode:
// Löschen
Image1.Canvas.Pen.Color := clWhite; Image1.Canvas.Brush.Color := clWhite; Image1.Canvas.Ellipse(x, y, x + 50, y + 50); // Position ändern If x < 0 Then xmove := 10 Else If x >= Width - 50 Then xmove := -10; If y < 0 Then ymove := 10 Else If y >= Heigth - 50 Then ymove := -10; Inc(x, xmove); // x := x + xmove; Inc(y, ymove); // y := y + ymove; // auf neuer Position einzeichnen Image1.Canvas.Pen.Color := clGreen; Image1.Canvas.Brush.Color := clYellow; Image1.Canvas.Ellipse(x, y, x + 50, y + 50); |
Re: Ball bewegen mit Canvas
es klappt leider immer noch nicht.Ich versteh einfach nciht , was dieses xmove macht , mir ist schon klar , dass damit die Richtung des Balls angegebvn wird.Kann nicht nochmal einer den quelltext so von mir verändern , dass es klappt.
sorry mein lehrer in der schule erklärt gar nichts!! |
Re: Ball bewegen mit Canvas
Liste der Anhänge anzeigen (Anzahl: 4)
xMove und yMove speichern einfach die Bewegungsrichtung des Balls.
Diese beiden Variablen verden einfach beim auftreffen an der Wand entsprechend umgekehrt, ansonsten werden diese zur aktuellen Position des Balls dazuaddiert. Zitat:
|
Re: Ball bewegen mit Canvas
Hier liegt der Hase im Pfeffer:
Zitat:
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:
Delphi-Quellcode:
if (x >= 760)and (xMove > 0) then
xMove := -10; |
Re: Ball bewegen mit Canvas
Vielen Dank für die Hilfe!Kann mir jetzt noch einer erklären , was das hier bedeutet:
Delphi-Quellcode:
Inc(x, xMove);
Inc(y, yMove); |
Re: Ball bewegen mit Canvas
Zitat:
Delphi-Quellcode:
x:=x+xMove;
y:=y+yMove; |
Re: Ball bewegen mit Canvas
Hi,
wie Benjamin schon sagte, ist:
Delphi-Quellcode:
das Selbe wie:
Inc(x, xMove);
Delphi-Quellcode:
Inc bedeutet immer eine Erhöhung eines Wertes.
x := x + xMove;
So wird mit Inc(x, xMove) x um den Wert xMove erhöht. Übrigens bedeutet Inc einfach Inkrementieren, das wiederum ist nichts anderes als Heraufzählen. :wink: Das Selbe gibt es dann natürlich auch als Herunterzählen. Dies nennt man Dekrementieren und würde so aussehn:
Delphi-Quellcode:
MfG Marc
Dec(x, xMove);
P.S.: Zu spät -ich weiß- aber jetzt habe ich mir schon mal die "Mühe" gegeben. :stupid: |
Re: Ball bewegen mit Canvas
Vielen Dank an alle Helfer!Hab jetzt alles verstanden und alles funktioniert.
Jetzt muss ich irgendwo im Image ein Loch erstellen und wenn der Ball dann zum Loch kommt , soll der ball darin verschwinden , also wie beim Billiard!Hat einer Idee , wie ich das mahcen kann? |
Re: Ball bewegen mit Canvas
Indem du prüfst, ob die x- und y-Koordinaten des Balls denen des Lochs entsprechen:
Delphi-Quellcode:
if (xBall = xHole) and (yBall = yHole) then
... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz