AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Ball bewegen mit Canvas
Thema durchsuchen
Ansicht
Themen-Optionen

Ball bewegen mit Canvas

Ein Thema von Penelopee · begonnen am 7. Okt 2005 · letzter Beitrag vom 9. Okt 2005
Antwort Antwort
Seite 2 von 3     12 3      
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#11

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 23:08
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!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.147 Beiträge
 
Delphi 12 Athens
 
#12

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 23:31
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);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#13

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 23:49
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!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.147 Beiträge
 
Delphi 12 Athens
 
#14

Re: Ball bewegen mit Canvas

  Alt 8. Okt 2005, 00:50
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 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 -.-''
Angehängte Dateien
Dateityp: exe project1_258.exe (374,0 KB, 17x aufgerufen)
Dateityp: dfm unit1_483.dfm (557 Bytes, 8x aufgerufen)
Dateityp: pas unit1_975.pas (1,7 KB, 12x aufgerufen)
Dateityp: dpr project1_500.dpr (171 Bytes, 8x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#15

Re: Ball bewegen mit Canvas

  Alt 8. Okt 2005, 08:48
Hier liegt der Hase im Pfeffer:
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;
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#16

Re: Ball bewegen mit Canvas

  Alt 8. Okt 2005, 11:26
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);
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Ball bewegen mit Canvas

  Alt 8. Okt 2005, 11:29
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;
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von Chegga
Chegga

Registriert seit: 5. Nov 2004
Ort: Kirchheim
453 Beiträge
 
Delphi 7 Architect
 
#18

Re: Ball bewegen mit Canvas

  Alt 8. Okt 2005, 11:45
Hi,

wie Benjamin schon sagte,
ist:
Inc(x, xMove); das Selbe wie:
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.

Das Selbe gibt es dann natürlich auch als Herunterzählen.
Dies nennt man Dekrementieren und würde so aussehn:
Dec(x, xMove); MfG Marc

P.S.:
Zu spät -ich weiß-
aber jetzt habe ich mir schon mal die "Mühe" gegeben.
Marc P.
Grüße aus Kirchheim Teck
  Mit Zitat antworten Zitat
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#19

Re: Ball bewegen mit Canvas

  Alt 8. Okt 2005, 12:20
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?
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#20

Re: Ball bewegen mit Canvas

  Alt 8. Okt 2005, 16:53
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
  ...
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz