Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Ballverlauf malen (https://www.delphipraxis.net/66435-ballverlauf-malen.html)

NMR 29. Mär 2006 17:00


Ballverlauf malen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi habe folgendes Prob, ich möchte gern bei meinem Ping Pong, dass er den Ballverlauf mit einem Strich nachmalt.
hier erst mal meein QT

Delphi-Quellcode:
procedure Tpingpong.Timer1Timer(Sender: TObject);
begin
randomize;
   //rechte Seite
  if ((h_dir =1) And (ball.Left >= clientwidth -(ball.Width+9)))
  then begin
    h_dir  :=-1;
    h_speed := random (13)+ 1;
   spielerA:= spielerA +1  ;
  end;

    //unten
  if ((v_dir =1)and (ball.Top >= clientheight-(ball.Height+9+20)))
  then begin
     v_dir    :=-1;
      v_speed := random (13) +1 ;
      end;

//oben
  if ((v_dir =-1) And (ball.top<=0))
   then begin
   v_dir:=1 ;
    v_speed:= random (13)+1 ;
   end;

//links

  if ((h_dir =-1) And (ball.Left <= 0))
  then begin
    h_dir :=1 ;
    h_speed := random (13)+1 ;
    SpielerB:= SpielerB -1;
  end;



  ball.Left :=ball.Left+h_speed*h_dir;
  ball.Top :=ball.Top+v_speed*v_dir;

 
pingpong.canvas.pen.color := clred ;
pingpong.canvas.moveto(ball.Left,ball.top);
pingpong.canvas.lineto(ball.left ,ball.Height);  //<--- Das ist die Stelle wo ich
                                                        // nicht weiter komme.
                                                       
  end;

sakura 29. Mär 2006 17:01

Re: Ballverlauf malen
 
Editiere doch bitte den obigen Beitrag und nutze die [delphi]CODE[/delphi] Tags:
Delphi-Quellcode:
Code
...:cat:...

NMR 29. Mär 2006 17:06

Re: Ballverlauf malen
 
jo sry hab ich vergessen :lol:
habs geändert

Nicodius 29. Mär 2006 17:13

Re: Ballverlauf malen
 
du musst Form1(in deinem fall Pingpong).Repaint vor dem erneuten zeichenvorgang hinzufügen :) (dann ist immer nur eine linie ;) )

ah sorry nachzeichnen ist nicht schwer - du musst aber auf jeden fall immer die ganze zeichenfläche imemr speichern und laden damit nicht überzeichnet wird(sry wenns einfacher geht hab n jahr pause gemacht mit delphi ;) ) - auf jeden fall würd ich dir empfehlen eien Paintbox zu machen ;) (gibt hier auch solche tutorials bei grafik in der codelib guck dort mal ;) )
grüße Nico

Flare 29. Mär 2006 17:16

Re: Ballverlauf malen
 
Da du es so "umständlich" programmiert hast (damit meine ich, so würde ich es nie machen!) ist der einfachere weg nicht benutzbar...
du musst ein array erstellen, welches sich die ganzen positionen von dem ball merkt. wie groß dieses array sein muss hängt von der größe und dem winkel ab in die der ball sich bewegt. dann musst du bei jedem schritt überprüfen ob der ball schon von einem dieser punkte weg ist und dann dort den strich hinmalen. dann musst du diesen punkt wieder löschen, da er ansonsten vielleicht nochmal berechnet wird.
hoffe du hast verstanden was ich sagen möchte ^^


Flare

Nicodius 29. Mär 2006 17:24

Re: Ballverlauf malen
 
naja generell könnte er mit
Delphi-Quellcode:
canvas.pixels[x,y] := clblack
; auch nachmalen ;) aber eben bild speichern ist wichtig

Flare 29. Mär 2006 17:45

Re: Ballverlauf malen
 
@Nicoduis: Das Problem bei dieser Methode ist, dass der Ball ja wieder gelöscht wird und damit auch die Linie die gerade ebend gemalt hat.

Oder man löscht den Kreis, lässt den Strich ziehen, speichert dieses Bild, macht des Kreis wieder hin, löscht ihn wieder weg, lädt das eben gespeicherte bild, zeichnet die neue linie, speichert wieder, ...
(kann auch sein dass du das meintest, Nicoduis)


Flare

NMR 29. Mär 2006 19:11

Re: Ballverlauf malen
 
was soll ich denn jetzt änderen ^^ oder machen...
ich weiß das es iwie klappt. Aber wie ahh ich weiß es net mehr ^^ lol auch mit den .canvas.lineto und bla ach ...ah :wall:
:-D
danke aber schon mal

Nicodius 29. Mär 2006 21:02

Re: Ballverlauf malen
 
@flare kreis als shape?

Flare 29. Mär 2006 21:07

Re: Ballverlauf malen
 
Keine Ahnung, ich meine mit Kreis das Ding, was du als Ping Pong Ball durchgehen lässt. Ich weiß nicht was in deinem Fall der Ball ist, ob Shape oder TImage oder sonstwas. :wink:


Flare


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.
Seite 1 von 2  1 2      

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