Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Ball bewegen mit Canvas (https://www.delphipraxis.net/54612-ball-bewegen-mit-canvas.html)

Penelopee 7. Okt 2005 23:08

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:
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)
danke!

himitsu 7. Okt 2005 23:31

Re: Ball bewegen mit Canvas
 
Delphi-Quellcode:
if (x >759) and (xmove<0) then
xmove:=-10;
zu
Delphi-Quellcode:
if x >= 759 - 50 then xmove := -10;
if x <= 0 then xmove := +10;

oder in der Initialisierung:
Delphi-Quellcode:
// 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);
und in der Schleife:
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);

Penelopee 7. Okt 2005 23:49

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!!

himitsu 8. Okt 2005 00:50

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:

Zitat von Penelopee
danke für deine hilfe!!!Es klappt aber leider immer noch nicht.Ich soll eigentlich ein billiard spiel mit dem Canvas Befehl programmieren , aber ich bekomm ja nicht mal hin , dass ein Ball an der Wand apprallt!!

's tut mir allerdings etwas Leid, daß die Dateien einzeln sin ... aber mein Packer will im Moment wohl noch nicht so richtig -.-''

tigerman33 8. Okt 2005 08:48

Re: Ball bewegen mit Canvas
 
Hier liegt der Hase im Pfeffer:
Zitat:

Zitat von Penelopee
Delphi-Quellcode:
if (x >759) and (xmove<0) then
  xmove:=-10;

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:
Delphi-Quellcode:
if (x >= 760)and (xMove > 0) then
  xMove := -10;

Penelopee 8. Okt 2005 11:26

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);

BenjaminH 8. Okt 2005 11:29

Re: Ball bewegen mit Canvas
 
Zitat:

Zitat von Penelopee
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);

Das ist dasselbe wie
Delphi-Quellcode:
x:=x+xMove;
y:=y+yMove;

Chegga 8. Okt 2005 11:45

Re: Ball bewegen mit Canvas
 
Hi,

wie Benjamin schon sagte,
ist:
Delphi-Quellcode:
Inc(x, xMove);
das Selbe wie:
Delphi-Quellcode:
x := x + xMove;
Inc bedeutet immer eine Erhöhung eines Wertes.
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:
Dec(x, xMove);
MfG Marc

P.S.:
Zu spät -ich weiß-
aber jetzt habe ich mir schon mal die "Mühe" gegeben. :stupid:

Penelopee 8. Okt 2005 12:20

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?

tigerman33 8. Okt 2005 16:53

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.
Seite 2 von 3     12 3      

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