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 1 von 3  1 23      
Penelopee

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

Ball bewegen mit Canvas

  Alt 7. Okt 2005, 16:59
Hallo!
Ich benutze Delphi 7
Ich bin noch Anfänger , habe seit ein paar Wochen in der Schule Informatik.Nun zu meinem Problem:
Ich habe einen Ball gezeichnet mit diesem Code:Image1.Canvas.Ellipse(x,y,x+50,y+50).Und diesen Ball habe ich auch schon in Bewegung versetzt:
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);
Nun soll der Ball an allen 4 Wänden apprallen.Wie mache ich das????

MFG Penelopee

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
BenjaminH

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

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 17:17
Hallo,
willkommen in der DP
Verwende doch bitte die Delphi Tags, um deinen Code zu kennzeichnen...

Überprüfe doch einfach die X bzw. die Y Position des Balls, wenn sie >=Höhe,Breit ist, dann einfach das + zu einem - machen.
oder bei <=0 halt wieder zu +#

Grüße Benjamin
Benjamin
  Mit Zitat antworten Zitat
tigerman33

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

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 17:21
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):

Delphi-Quellcode:
var xMove: integer;
    x,y: integer;
begin
  // Initialisieren:
  xMove := +10;
  x := 100;
  y := 100;
  repeat
    // alten Ball löschen:
    Image1.Canvas.Pen.Color:=clwhite;
    Image1.Canvas.brush.Color:=clwhite;
    Image1.Canvas.Ellipse(x,y,x+50,y+50);

    // neuen Ball malen:
    Image1.Canvas.Pen.Color:=clgreen;
    Image1.Canvas.brush.Color:=clyellow;
    Image1.Canvas.Ellipse(x,y,x+50,y+50);

    if (x = 50) and (xMove < 0) then
      xMove := +10 else // an der linken Wand abprallen
    if (x = Image1.Width - 50) and (xMove > 0) then
      xMove := -10; // an der rechten Wand abprallen

    x := x + xMove;
    Delay(500);
  until <Abbruchbedingung>;
end;
Das ist jetzt quick and dirty, und für den Programmierstil gehör ich eigentlich auch erschossen, aber ein bisschen Arbeit muss dir ja auch noch bleiben.
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
 
#4

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 18:26
danke für die hilfe , ich hab aber noch ein problem.Wenn der Ball die Wand erreicht , prallt er einmal ab , aber dann ist die if Bedingung ja nicht mehr erfüllt und der Ball geht wieder auf die wand zu!!Hier nochmla mein Code:

[xmove:=+50;
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)then

x:=x-50;
Image1.Canvas.Pen.Color:=clgreen;
Image1.Canvas.brush.Color:=clyellow;
Image1.Canvas.Ellipse(x,y,x+50,y+50);

]
  Mit Zitat antworten Zitat
Spoon

Registriert seit: 26. Apr 2003
39 Beiträge
 
#5

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 18:44
Du hast da einen grundsätzlichen Fehler drin, du deklarierst zwar xMove, doch benutzt du sie nicht.
Wenn du dir das Bsp. von tigerman anschaust, so ist:

Neue_Ball_Position := Alte_Ball_Position + xMove

xMove muss dementsprechend für eine Bewegung nach rechts größer 0 sein, für eine Bewegung nach links kleiner 0.

d.h. du musst bei if (x >759)then die Variable xMove kleiner 0 setzten und natürlich überhaupt die Position des Balles mit xMove berrechnen. (x := x+xmove)
  Mit Zitat antworten Zitat
Penelopee

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

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 19:10
wann und wo muss ich die Position des Balles berechnen???Vielen Dank für die Hilfe!!
  Mit Zitat antworten Zitat
tigerman33

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

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 19:59
Du berechnest die Position des Balles in der repeat..until-Schleife. Hattet ihr Schleifen schon im Unterricht? Wenn nicht, sieh dir mal Delphi-Referenz durchsuchenwhile,Delphi-Referenz durchsuchenrepeat,Delphi-Referenz durchsuchenfor 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
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
 
#8

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 22:01
Kannst du bitte nochmal den Text Delphi Text posten , so dass es funktioniert.Wär sehr nett!Und wir hatten in der Schule bisher nur if und for schleifen.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 22:22
Ich hoffe, es hilft....
Angehängte Dateien
Dateityp: zip bouncingball_185.zip (2,3 KB, 34x aufgerufen)
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
tigerman33

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

Re: Ball bewegen mit Canvas

  Alt 7. Okt 2005, 22:47
Die repeat..until Schleife:
Delphi-Quellcode:
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:
Delphi-Quellcode:
while <Bedingung> do
  Anweisung
Der Unterschied ist, dass zuerst die Bedingung getestet wird, die Schleife also u.U. gar nicht erst durchlaufen wird.
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 15:00 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