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 |