Projektdatei der ersten Lösung:
Die Attribute:
Ein Spielfeld muss sich zeichnen können, also benötigt es wie die Kugel auch
einen Stift.
Ein Spielfeld hat eine Position auf dem Bildschirm, gekennzeichnet durch die
Koordinaten der linken oberen Ecke: xLinksOben , yLinksOben.
Ferner ist es gekennzeichnet durch seine Breite und seine Höhe.
Die
Methoden:
Neben den Methoden zum Festlegen der Eigenschaften eines Spielfeldes ,
SetzeBreite, SetzeHoehe, SetzePosition braucht ein Spielfeld nur noch eine
Methode, um sich selbst zu zeichnen.
Damit erhalten wir:
constructor TSpielfeld.init; begin meinStift := Stift.init; end; procedure TSpielfeld.SetzeBreite (pBreite: Zahl); begin Breite := pBreite end; procedure TSpielfeld.SetzeHoehe (pHoehe: zahl); begin Hoehe := pHoehe end; procedure TSpielfeld.setzePosition (pXLinksOben: Zahl; pYLinksOben: Zahl); begin xLinksOben := pXLinksOben; yLinksOben := pYLinksOben; end; procedure TSpielfeld.zeichne; begin meinStift.bewegeBis(xLinksOben, yLinksOben); meinStift.zeichneRechteck(breite,hoehe); end; destructor TSpielfeld.gibFrei; begin meinStift.GibFrei end; |
Nicht vergessen: Die Spielfeldunit muss
eingebunden werden.
Spielfeld erzeugen
Festlegen der Eigenschaften
des Spielfeldes
z e i c h n e n --------------------->
Hier kommt eine Schwäche des
Entwurfes zum Tragen:
Die Koordinaten zur Reflektion der
Kugel müssen von der Programmiererin/
dem Programmierer gemerkt und als
Zahlen richtig eingesetzt werden
|
program Billard;
uses
mSum,
mUhr,
mTKugel in 'mTKugel.pas',
mTSpielfeld in 'mTSpielfeld.pas';
var
//Objekte benennen
derBildschirm : Bildschirm;
dieMaus : Maus;
meinStift : Stift;
meineUhr : Uhr;
ersteKugel : TKugel;
zweiteKugel : TKugel;
dasSpielfeld : TSpielfeld;
begin
// Initialisierung
derBildschirm := Bildschirm.init;
dieMaus := Maus.init;
meinStift := Stift.init;
meineUhr := Uhr.init;
ersteKugel := TKugel.init;
zweiteKugel := TKugel.init;
dasSpielfeld := TSpielfeld.init;
// Aktionsteil
ersteKugel.setzePosition (250,300);
ersteKugel.SetzeGeschwindigkeit(1);
zweiteKugel.setzePosition(500,400);
zweiteKugel.SetzeGeschwindigkeit(-0.5);
dasSpielfeld.setzeBreite(500);
dasSpielfeld.SetzeHoehe(300);
dasSpielfeld.setzePosition(100,200);
dasSpielfeld.zeichne;
repeat
ersteKugel.bewege;
zweiteKugel.bewege;
if ersteKugel.GibXPos + 12 > 600 then
ersteKugel.setzeGeschwindigkeit(-1);
if ersteKugel.GibXPos - 12 < 100 then
ersteKugel.setzeGeschwindigkeit(1);
if zweiteKugel.GibXPos + 12 > 600 then
zweiteKugel.setzeGeschwindigkeit(-0.5);
if zweiteKugel.GibXPos - 12 < 100 then
zweiteKugel.setzeGeschwindigkeit(0.5);
meineUhr.warte(1)
until dieMaus.istGedrueckt;
// Aufräumen
dasSpielfeld.GibFrei;
ersteKugel.GibFrei;
zweiteKugel.GibFrei;
meineUhr.gibFrei;
meinStift.gibFrei;
dieMaus.gibFrei;
derBildschirm.gibFrei
end.
|
| Zur
nächsten Seite
|
| © 2005 GK 11 If und G. Kubitz Hannah-Arendt-Gymnasium, Lengerich Letztes Update: 17.11.04 |