is-Logo Einführung in Grafikprogrammierung
Uebung 3 - Fachklassen konstruieren

S. Spolwig

[Home | Unterrichtssequenzen]

Die Spezifikation von Billard

  • KUGEL erbt alles von KREIS und erweitert spezielle Attribute und spezielle Methoden
    und kennt ZEICHENBLATT  (den Tisch), um die Bande zu prüfen

  • FENSTER kennt ZEICHENBLATT und KUGEL

UNIT uKugel ;
(* ******************************************************************** *)
(* K L A S S E :  TKugel                                                *)
(* -------------------------------------------------------------------- *)
(* Version     : 1.0                                                    *)
(* Autor       : (c) S. Spolwig - OSZ Handel, 10997 Berlin              *)
(* Beschreibung: Das Objekt stellt eine Billardkugel dar.               *)
(*                                                                      *)
(* Compiler    : Delphi 3.0                                             *)
(* Aenderungen : V. 1.0		08-MAY-99                               *)
(*		    1.1   	14-JUN-01	 SetLink  		*)
(* ******************************************************************** *)
INTERFACE
(* ==================================================================== *)
USES uGrafik,
     uZeit;
  type
   TKugel = class (TKreis)
              XRichtung,
              YRichtung  : integer;
              procedure SetLink(Zbl : TZeichenblatt);
              procedure SetXRichtung (xR : integer);
              procedure SetYRichtung (yR : integer);
              procedure PosVersetzen;
              procedure BandePruefen;
              function  Trifft (andereKugel : TKugel) : boolean;
              procedure RichtungTauschenMit (andereKugel : TKugel);
              procedure Bewegen;
            end;
(* -------------------- B e s c h r e i b u n g -------------------------
Oberklasse    : TKreis
Bezugsklassen : TZeichenblatt
Methoden
--------
SetXRichtung (xR : integer);
  Auftrag: West-Ost-Richtung festlegen in Pixeln.
  vorher : -
  nachher: -
SetYRichtung (yR : integer);
  Auftrag: Nord-Sued-Richtung festlegen in Pixeln.
  vorher : -
  nachher: -
PosVersetzen
  Auftrag: neue Position festlegen
  vorher :
  nachher: alte Position ist um die Richtungswerte erhoheht
BandePruefen
  Auftrag: Wenn die Bande getroffen wird, den Einfallswinkel
           der Kugel spiegeln.
  vorher :
  nachher: Kugel laueft weiter
Trifft (andereKugel : TKugel) : boolean
   Anfrage: ob eine andere Kugel beruehrt wird
   vorher : andere Kugel ist vorhanden
   nachher: true, wenn der Abstand zwischen beiden Kugel < 25 ist.
RichtungTauschenMit (andereKugel : TKugel)
  Auftrag: wenn eine andere Kugel getroffen ist, tauschen beide ihre
           West-Ost und Nord-Sued Richtungen aus.
  vorher : andere Kugel ist getroffen
  nachher: Kugel Bewegen in entgegengesetzten Richtungen
Bewegen
  Auftrag: Kugel auf dem Bildschirm von alter Position nach neuer Position
           versetzen und zeigen
  vorher : -
  nachher: Kugel ist um den Aenderungswert in x- und yRichtung versetzt.
----------------------------------------------------------------------- *)
unit uFenster;
(* ******************************************************************** *)
(* K L A S S E : TFenster                                               *)
(* -------------------------------------------------------------------- *)
(* Version     : V. 1.1                                                 *)
(* Autor       : (c) S. Spolwig - OSZ Handel I, 10997 Berlin            *)
(* Beschreibung: TFenster ist das GUI fuer das Programm Billard.        *)
(*                                                                      *)
(* Compiler    : Delphi 3.0                                             *)
(* Aenderungen : V 1.0  -   14-JAN-99                                   *)
(*		 1.1	- 	14-JUN-01 SetLink			*)
(* ******************************************************************** *)
interface
(* ==================================================================== *)
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls,
  uGrafik,  // import: Zeichenblatt
  uKugel ;  // import: TKugel
type
  TFensterFrm = class(TForm)
    SteuerPnl : TPanel;
    TischImg  : TImage;
    StopBtn   : TButton;
    StartBtn  : TButton;
    EndeBtn   : TButton;
    procedure FormCreate(Sender: TObject);
    procedure StopBtnClick(Sender: TObject);
    procedure StartBtnClick(Sender: TObject);
    procedure EndeBtnClick(Sender: TObject);
   private
    procedure AlleKugelnRollen;
  end;

// ======================================================================

 


©    05. Oktober 2008    Siegfried Spolwig