Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektieren (https://www.delphipraxis.net/149351-frage-zu-shapes-shape2-soll-shape1-abblocken-reflektieren.html)

AddiDelphi 20. Mär 2010 17:13

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Zitat:

Zitat von DeddyH
Die untere Kante des Balls entspricht doch Ball.Top + Ball.Height, sind wir uns da einig? Dementsprechend ist dann die rechte Kante des Balls Ball.Left + Ball.Width, das gleiche gilt äquivalent für den Schläger. Nun kann man das ganz einfach ausrechnen, dafür muss ich Dir keinen Quelltext geben.

Ich stehe vollkommen auf dem Schlauch, wie kann ein Ball ne Kante haben? Meinst du den untersten Y-Punkt den der Ball haben kann?

Dann muss ja unterste Kante vom Ball > die Y-Koordinate vom Schläger an der Stelle sein, also

untere Kante vom Ball > als was?

Wenn ich bei mir Ball.Top/Height eingebe, steht da undefinierter Begriff, dabei hab ich es genauso gemacht wie bei dem Ball, da kommt keine Fehlermeldung.

DeddyH 20. Mär 2010 17:30

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Da ich Deine "Ball"-Klasse nicht kenne, kann ich Dir das auch nicht sagen. Aber anscheinend benutzt Du ein Shape, um den Ball zu zeichnen, also musst Du dann dessen Koordinaten zur Berechnung hernehmen.

AddiDelphi 20. Mär 2010 18:11

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Zitat:

Zitat von DeddyH
Da ich Deine "Ball"-Klasse nicht kenne, kann ich Dir das auch nicht sagen. Aber anscheinend benutzt Du ein Shape, um den Ball zu zeichnen, also musst Du dann dessen Koordinaten zur Berechnung hernehmen.

Das ist die mTBall:
Delphi-Quellcode:
UNIT mtBall;

interface

//--------------------  ggf Uses-Liste einfügen !  --------------------
uses graphics;

type
  TBall = class

  private //Attribute
    X : Integer;
    Y : Integer;
    Farbe : TColor;

  public //Methoden
    procedure bewege (px,py: Integer); virtual;
    procedure SetzeFarbe (pFarbe: TColor); virtual;
    procedure SetzeX (pX: Integer); virtual;
    procedure SetzeY (pY: Integer); virtual;
    function GibFarbe : TColor; virtual;
    function GibX : Integer; virtual;
    function GibY : Integer; virtual;
   

   end;

implementation

//+---------------------------------------------------------------------
//|         TBall: Methodendefinition
//+---------------------------------------------------------------------

//-------- bewege (public) ---------------------------------------------
procedure TBall.bewege (px,py: Integer);
begin
  x:=x+px;
  y:=y+py;
end;


//-------- SetzeFarbe (public) -----------------------------------------
procedure TBall.SetzeFarbe (pFarbe: TColor);
begin
  Farbe := pFarbe
end;

//-------- SetzeX (public) ---------------------------------------------
procedure TBall.SetzeX (pX: Integer);
begin
  X := pX
end;

//-------- SetzeY (public) ---------------------------------------------
procedure TBall.SetzeY (pY: Integer);
begin
  Y := pY
end;

//-------- GibFarbe (public) -------------------------------------------
function TBall.GibFarbe : TColor;
begin
  result := Farbe
end;

//-------- GibX (public) -----------------------------------------------
function TBall.GibX : Integer;
begin
  result := X
end;

//-------- GibY (public) -----------------------------------------------
function TBall.GibY : Integer;
begin
  result := Y
end;

end.
Und das ist die mTBrett (Schläger):
Delphi-Quellcode:
UNIT mTBrett;

interface

//--------------------  ggf Uses-Liste anpassen !  --------------------
uses Graphics;

type
  TBrett = class


  private //Attribute
    a : Integer;
    b : Integer;
    Farbe : TColor;

  public //Methoden
    procedure Bewegebrett (pa,pb: Integer); virtual;
    procedure SetzeA (pA: Integer); virtual;
    procedure SetzeB (pB: Integer); virtual;
    function GibA : Integer; virtual;
    function GibB : Integer; virtual;

   end;

implementation

//+---------------------------------------------------------------------
//|         TBrett: Methodendefinition
//+---------------------------------------------------------------------

//-------- Bewegebrett (public) ---------------------------------------------
procedure TBrett.Bewegebrett (pa,pb: Integer);
begin
  a:=a+pa;
  b:=b+pb;
end;

//-------- SetzeA (public) ---------------------------------------------
procedure TBrett.SetzeA (pA: Integer);
begin
  a := pa
end;

//-------- SetzeB (public) ---------------------------------------------
procedure TBrett.SetzeB (pB: Integer);
begin
  b := pB
end;

//-------- GibA (public) -----------------------------------------------
function TBrett.GibA : Integer;
begin
  result := a
end;

//-------- GibB (public) -----------------------------------------------
function TBrett.GibB : Integer;
begin
  result := b
end;






end.
Bitte hilf mir auf die Sprünge und sag mir was ich einfügen muss, alleine ohne Lösung wird das nix bei mir :shock:

DeddyH 20. Mär 2010 18:22

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Im Moment verstehe ich den Sinn der beiden Klassen noch nicht, außer dass Du alles doppelt machst (erst den Klassen etwas zuweisen, dann den Shapes). Rund wird das IMO erst dann, wenn die Klassen Properties (= Eigenschaften) bekommen und ihre Koordinaten dann in den Setter-Methoden selbst berechnen.

AddiDelphi 20. Mär 2010 18:30

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Zitat:

Zitat von DeddyH
Im Moment verstehe ich den Sinn der beiden Klassen noch nicht, außer dass Du alles doppelt machst (erst den Klassen etwas zuweisen, dann den Shapes). Rund wird das IMO erst dann, wenn die Klassen Properties (= Eigenschaften) bekommen und ihre Koordinaten dann in den Setter-Methoden selbst berechnen.

Genau so hat es uns unser Lehrer gezeigt..

Weißt du jetzt nicht was ich eingeben muss? Das kann doch nicht so schwer sein :(

DeddyH 20. Mär 2010 19:08

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, für den Ball hab ich jetzt einmal ein Beispiel erstellt. Schau Dir das einfach mal in Ruhe an.

[edit] Bevor jemand meckert: die Klasse ist noch nicht fertig, ich wollte den TE nur nicht mit Code "erschlagen" :mrgreen: [/edit]

sx2008 20. Mär 2010 20:12

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Zitat:

Zitat von AddiDelphi
habs versucht zu zeichnen

Mit dem Handy abfotografieren, auf den PC laden, mit Bildbearbeitung zurechtschneiden und als Anhang anfügen.

Warum gibt's eigentlich keine Maus mit eingebauter Kamera mit der man ein Schriftstück mit einem Klick fotografieren kann??
Und dass mir keiner meine Erfindung klaut... :spin:

AddiDelphi 22. Mär 2010 16:36

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Habs hinbekommen! Danke an alle die versucht haben, mir zu helfen :-D

Jetzt muss ich nurnoch rausfinden, wie ich einstelle, dass der Ball mit der Zeit immer schneller wird.
Stell ich das im Timer ein oder wie?

DeddyH 22. Mär 2010 17:08

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Entweder das Timer-Intervall runtersetzen oder die "Sprungweite" erhöhen. Letzteres könnte aber schnell unschön aussehen.

AddiDelphi 22. Mär 2010 17:45

Re: Frage zu Shapes: Shape2 soll Shape1 abblocken/reflektier
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, wie schreibe ich das dann?

In den Timer? Zum Beispiel:

when 1min over then Intervall:=5
when 2min ober then Intervall:=4

usw..

Oder gehts auch einfacher?

das der sich Stück für Stück verschnellert, ohne abprubt beschleuningt, sondern kontinuierlich wie zum Beispiel beim beschleunigen eines Autos?


P.S.: Sollte genau so sein wie in diesem Spiel, was ich im Web gefunden habe. (s. Anhang)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 Uhr.
Seite 2 von 2     12   

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