Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

A Workshop. A - 2 Workshop © by Software AG Ziel : JBuilder kennenlernen, Anlegen der Klassen : Car, CarRace Starten Sie den JBuilder. Legen Sie ein neues.

Ähnliche Präsentationen


Präsentation zum Thema: "A Workshop. A - 2 Workshop © by Software AG Ziel : JBuilder kennenlernen, Anlegen der Klassen : Car, CarRace Starten Sie den JBuilder. Legen Sie ein neues."—  Präsentation transkript:

1 A Workshop

2 A - 2 Workshop © by Software AG Ziel : JBuilder kennenlernen, Anlegen der Klassen : Car, CarRace Starten Sie den JBuilder. Legen Sie ein neues Projekt mit dem Namen Game an. Legen Sie eine neue Klasse Car mit den Attributen kennzeichen (String), marke (String) und leistung (int) an. Für alle Attribute werden die Get/Set-Methoden benötigt. Speichern und übersetzen Sie Ihre Car-Klasse. Legen Sie eine neue Klasse CarRace mit Visibility Public an. Definieren Sie in dieser Klasse eine Methode main mit den Eigenschaften Public und static. Die main-Methode wird mit einem Parameter vom Typ Array : String[] aufgerufen. Legen Sie in der main-Methode ein Objekt myCar vom Typ Car an. Besetzen Sie die Attribute des Autos mit Werten und zeigen Sie die Attributwerte mit System.out.println an. Speichern und übersetzen Sie Ihre CarRace-Klasse. Starten Sie Ihr Projekt mit der Main Class CarRace. Fügen Sie in die Car-Klasse eine neue Methode print ein, die die Attribute des Autos anzeigt. Ändern Sie die main-Methode der CarRace-Klasse ab, so dass die Anzeige des Autos jetzt durch die print-Methode des Autos erfolgt. Übersetzen Sie alle erforderlichen Klassen neu und starten Sie Ihr Projekt.

3 A - 3 Workshop © by Software AG Klassendiagramm Sequenzdiagramm CarRace main String[ ] CarRace Car kennzeichen marke leistung Car print CarRaceCar main() print() new Car( ) Game [ Project ] Werte setzen mittels SET-Methoden

4 A - 4 © by Software AG Quest Abb. 1: Spielbrett Du bist im Zauberwald gefangen, aber findest Du das verwunschene Schloss, bist du erlöst. Spielregeln Ziel des Spiels ist, das Schloss zu finden, das im Zauberwald versteckt ist. Viele Schätze liegen unter den Bäumen, aber nur hinter einem Baum liegt der Eingang zum Schloss.

5 A - 5 Workshop © by Software AG Abb. 2: Konsole Mit den Knöpfen kann die Spielfigur jeweils eine Gitterzelle nach oben / unten / links / rechts bewegt werden. Bei jedem Zug werden 30 Energie-Einheiten verbraucht. Zu Spielbeginn besitzt die Figur einen vollen Tank mit 1500 Energie-Einheiten. An drei Energiequellen kann die Figur ihren Energievorrat wieder aufladen. Bei leerem Tank ist kein Zug mehr möglich. Quest Advanced Mit dem Aufbaupaket von Quest sind fünf verschiedene Schätze in einer vom Spiel vorgegebenen Reihenfolge zu finden. Aufgabe des Spielers ist, sich durch Ziehen seiner Spielfigur auf dem Spielbrett eine gute Kenntnis zu verschaffen, wo welcher Schatz versteckt ist und zu dem gerade gesuchten Schatz zu ziehen. Das Spiel ist beendet, wenn die fünf Schätze gefunden sind. Als Zusatzmodule sind weitere Spielfiguren und Energiequellen erhältlich. Der Spielspass mit Quest ist dadurch in immer neuen Varianten möglich. Das Ziehen Das Ziehen der Spielfigur erfolgt über die Konsole des Spielers (Abbildung 2).

6 A - 6 Workshop 1 © by Software AG Ziel : Anlegen der Klassen : Car --> Spielfigur Quest --> "Spiel-Controlers" Start--> GUI-Ersatz Starten Sie den JBuilder. Legen Sie eine neue Klasse Quest an. Definieren Sie in dieser Klasse eine Methode play, die ohne Parameter aufgerufen wird. Instanziieren Sie in dieser Methode ein Car-Objekt, besetzen Sie die Attribute des Autos mit Werten und zeigen Sie die Attributwerte durch die print-Methode des Autos an. Speichern und übersetzen Sie Ihre Quest-Klasse. Legen Sie eine neue Klasse Start mit der Eigenschaft Public an. Definieren Sie in dieser Klasse eine Methode main mit den Eigenschaften Public und static. Die main-Methode wird mit einem Parameter vom Typ Array : String[] aufgerufen. Legen Sie in der main-Methode ein Objekt myQuest vom Typ Quest an und rufen Sie die play-Methode dieses Objekts auf. Speichern und übersetzen Sie Ihre Start-Klasse. Starten Sie Ihr Projekt mit der Main Class Start.

7 A - 7 Workshop 1 © by Software AG Klassendiagramm Sequenzdiagramm Quest play Quest Start main String[ ] Start Car kennzeichen marke leistung Car print StartQuestCar main() new Quest( ) print() play() new Car( ) Werte setzen Game [ Project ]

8 A - 8 Workshop 2 © by Software AG Ziel : Anlegen einer weiteren Klasse (Position), die als Attribut in einer bereits definierten Klasse verwendet wird. Legen Sie eine neue Klasse Position mit zwei int-Attributen x und y an. Schreiben Sie für diese Klasse einen Konstruktor, mit dem die Koordinaten initialisiert werden können. Überlegen Sie, welche Rolle der Default-Konstruktor (ohne Parameter) dieser Klasse bzgl. Initialisierung spielen soll. Fügen Sie in die Car-Klasse ein neues Attribut ort vom Typ Position ein. Schreiben Sie in der Car-Klasse einen Konstruktor, mit dem der Ort des Autos initialisiert werden kann. Überlegen Sie, welche Rolle der Default-Konstruktor dieser Klasse ( Initialisierung des Attributes ort ) spielen soll. Fügen Sie in der Quest-Klasse ein neues Attribut myCar vom Typ Car ein. Instanziieren Sie im Konstruktor von Quest ein Auto, initialisieren Sie dessen Ort und speichern Sie die Referenz in myCar. In der play-Methode soll kein Auto instanziiert werden. Übersetzen Sie alle erforderlichen Klassen neu und starten Sie Ihr Projekt. Erweitern Sie die print-Methode der Car-Klasse, so dass auch der Ort des Autos angezeigt wird. (Hinweis : die Methode toString(<-- String) wird von Object geerbt und kann überschrieben werden)

9 A - 9 Workshop 2 © by Software AG Klassendiagramm Sequenzdiagramm Quest play myCar Quest Start main String[ ] Start Car kennzeichen marke leistung ort Position Car print Position xyxy int Position StartQuestCar main() print() play() Position new Quest( ) new Car( ) new Position( ) Werte setzen Quest [ Project ]

10 A - 10 Workshop 3 © by Software AG Ziel : Lassen Sie Ihr Auto fahren. Führen Sie dazu die folgenden Erweiterungen / Änderungen durch Das Addieren von Positionen sollte in der Position-Klasse erfolgen. Die Methode soll die beiden Objekte nicht verändern, sondern ein neues Position-Objekt erzeugen. Legen Sie dazu in der Klasse Position eine Methode add an. Parameter ist ein Objekt vom Typ Position, das die Verschiebung des Autos angibt. Zurückgegeben wird ein neues Positions-Objekt, dass die neuen X- und Y- Koordinaten aus der Summe der x und y-Koordinaten der beiden Objekte (Aktuelle Position / Verschiebung) enthält. Der Aufruf erfolgt beispielsweise in der move-Methode des Autos in der Form setOrt(getOrt().add($p)). Legen Sie in der Car-Klasse eine Methode move an. Parameter ist ein Objekt vom Typ Position, das die Verschiebung des Autos angibt. Ändern Sie die play-Methode in Quest, so dass diese nun einen Parameter vom Typ Position akzeptiert und mit diesem die move-Methode des Autos aufruft. Zeigen Sie nach jeder Bewegung die aktuelle Position des Autos an. Besetzen Sie die Attribute des Autos mit Werten jetzt im Konstruktor von Quest und zeigen Sie die Werte mit der print-Methode an. Rufen Sie in der main-Methode der Start-Klasse mehrmals die play-Methode von Quest auf und lassen Sie Ihr Auto umherfahren. Optional Bewegungen eines Autos erfordern Energieaufwand. Zur Berechnung des Energieverbrauchs sollte in der Position-Klasse eine Methode intValue definiert werden, die für ein Position-Objekt die Summe der (positiven) x- und y-Koordinate als int-Wert zurückgibt. Der Aufruf erfolgt beispielsweise in der move-Methode des Autos in der Form verbrauch = verschiebung.intValue(). Hinweis: Zur Ermittlung des Absolutwertes eines int-Objekts kann die Methode java.lang.Math.abs verwendet werden. Definieren Sie in der Car-Klasse ein neues Attribut energie vom Typ int, das zu Beginn einen Vorrat von 1500 Energie-Einheiten enthält. Der Energieverbrauch bei jeder Bewegung entspricht der Summe der (positiven) x- und y-Verschiebung des Autos. Berücksichtigen Sie die Energieabnahme bei der Bewegung. Passen Sie die move-Methode in der Car-Klasse entsprechend an. Erweitern Sie die print-Methode in der Car-Klasse, so dass auch die Energie angezeigt wird.

11 A - 11 © by Software AG Workshop 3 Klassendiagramm Sequenzdiagramm Quest play myCar Position Quest Car kennzeichen marke leistung ort Position Car print move Position xyxy int Position Start main String[ ] Start QuestCar main() new Quest( ) play(Position) move(Position) print() play(Position)... Position new Position( ) Werte setzen new Car( ) add(Position) : Position new Position( ) Quest [ Project ] add Position

12 A - 12 Workshop 4 © by Software AG A) Ziel : Erstellen der grafischen Oberfläche Layout Erstellen Sie eine Konsole, über die die Eigenschaften Ihres Autos eingegeben / geändert werden können. Legen Sie in der Konsol-Klasse eine Instanzvariable myQuest vom Typ Quest an. B) Ziel : Anlegen von Methoden in der Klasse Konsole, die mit dem Event Listener der entsprechenden GUI- Komponenten verknüpft werden sollen (Apply / Exit-Button): Methode maintainCar (Visibility : public). Beim Drücken des "Apply"-Buttons soll beim ersten Mal eine Instanz von Quest angelegt und die Referenz in myQuest gespeichert werden. Beim ersten und jedem weiteren Aufruf werden die Attribute des Autos auf die eingegebenen Werte geändert und zur Kontrolle ausgegeben. (Werte im GUI sind Strings. Um sie in int-definierte Attribute zu zuweisen wird eine Wrapper-Methode der Integer Klasse benötigt  Integer.parseInt() ) Methode exit (Visibility : Public) Beim Drücken des "Exit"-Buttons und beim Schließen des Fensters soll diese Methode aktiviert werden. Der Event Listener beendet die Anwendung mit System.exit(0). Verknüpfen Sie diese Methoden mit den entsprechenden Event Listener, der jeweiligen Komponenten (Apply- Button, Exit-Button, Windows-Cross). Übersetzen Sie alle erforderlichen Klassen und starten Sie Ihr Projekt über die Konsole C) Ziel : Anlegen von Methoden in der Klasse Konsole, die mit dem Event Listener der entsprechenden GUI- Komponenten verknüpft werden sollen (Pfeil-Buttons): Methoden für die Push Buttons zum Bewegen des Autos. Diese rufen die play-Methode des Quest-Objekts auf und verschieben das Auto um jeweils 30 Einheiten nach oben / unten / links / rechts. Der Ursprung des Koordinatensystems befindet sich dabei in der linken oberen Ecke. Verknüpfen Sie diese Methoden mit den entsprechenden Event Listener, der jeweiligen Komponenten ( -, ^-, v- Button). Übersetzen Sie alle erforderlichen Klassen und starten Sie Ihr Projekt über die Konsole. Optional Das Auto soll nach der ersten Initialisierung nur noch über die Push Buttons bewegt werden können. Verhindern Sie in der maintainCar-Methode die erneute Eingabe der Koordinaten, indem Sie die beiden Koordinatenfelder durch Aufruf der Methode setEditable(false) deaktivieren. Zeigen Sie nach einer Bewegung des Autos den aktuellen Ort in den Koordinatenfeldern der Konsole an.(Wrapper- Methode für int  String = String.valueOf() ) Zeigen Sie die aktuelle Energie des Autos auf der Konsole an.

13 A - 13 © by Software AG Workshop 4 Klassendiagramm Sequenzdiagramm Quest play myCar Position Quest Konsole main frame myQuest String[ ] Konsole maintainCar rechts exit Position Car KonsoleQuestCar main() maintainCar() print() rechts() play(Position) move(Position) exit() print() Position new Position( ) Werte setzen new Quest( ) new Car( ) add(Position) : Position new Position( )

14 A - 14 Workshop 5 © by Software AG Klassendiagramm Ziel : Zeigen Sie die Position Ihres Autos grafisch an. Verwenden Sie dazu die Klasse Board, die sich im Package board befindet und Autos im Bereich zwischen 0 und 420 darstellen kann. public class board.Board public InstanzMethoden  Constructor( )  wipe ( ) "reinigt" das Spielbrett  draw (String,int,int) zeichnet das entsprechende Objekt auf dem Spielbrett throws UnknownElement Exception Definieren Sie in Quest eine Instanzvariable myBoard vom Typ Board. Implementieren Sie in der Car-Klasse eine Methode draw, die einen Parameter vom Typ Board akzeptiert und dessen draw-Methode mit den Parametern ("Car", x-Koordinate, y-Koordinate) aufruft. Legen Sie im Konstruktor von Quest eine Instanz von Board an. Verwenden Sie dazu die Instanzvariable myBoard. Machen Sie das Board durch Aufruf der Methode setVisible(true) sichtbar. Rufen Sie in der play-Methode von Quest nach dem Verschieben des Autos dessen draw-Methode auf und übergeben Sie das Board als Parameter. Zeichnen Sie das Grid auf das Spielbrett durch den Aufruf der Methode draw der Klasse Board mit den Parametern ("Grid",0,0). Löschen Sie vor dem Zeichnen des Autos den aktuellen Inhalt des Boards mit dessen Methode wipe(). Übersetzen Sie alle erforderlichen Klassen und starten Sie Ihr Projekt. Quest play myCar myBoard Position Quest Konsole main frame myQuest String[ ] Konsole maintainCar rechts exit Position Board wipe Board draw String int Car draw kennzeichen marke leistung ort Board Position Car print move Position

15 A - 15 © by Software AG Workshop 5 Sequenzdiagramm KonsoleQuestCarPosition main() maintainCar() print() new Board( ) rechts() play(Position) wipe() draw(Board) exit() print() Board new Position( ) setVisible(true) draw("Car",getOrt().getX(),getOrt().getY() move(Position) Werte setzen new Quest( ) new Car( ) add(Position) : Position new Position( ) draw("Grid",0,0)

16 A - 16 Workshop 6 © by Software AG Ziel : Entwerfen Sie eine Vererbungshierarchie der Spiel-Elemente von Quest. Legen Sie die erforderlichen Klassen mit ihren abstrakten und konkreten Eigenschaften an. Alle Elemente besitzen einen Ort und können auf das Spielbrett gezeichnet werden. Legen Sie dazu eine neue abstrakte Klasse Element an. Die Klasse besitzt ein Attribut ort vom Typ Position und eine abstrakte Methode draw. Das Attribut soll gekapselt sein. (private, Get/Set). Die Klasse soll einen Konstruktor besitzen, mit dem der Ort des Elements initialisiert werden kann. Überlegen Sie, welche Rolle der Default-Konstruktor spielen soll. Machen Sie die Car-Klasse zu einer Unterklasse von Element. Führen Sie die erforderlichen Änderungen in der Car-Klasse durch. Legen Sie für die Schätze des Spiels eine neue Klasse Treasure als Unterklasse von Element an. Schätze werden mit einer konkreten draw-Methode auf dem Spielbrett als Baum angezeigt. Es muss aber auch möglich sein, sie in ihrem wirklichen Aussehen an einem beliebigen Ort (beispielsweise unterhalb des Gitters) darzustellen. Legen Sie dazu eine abstrakte Methode show an, die außer dem Board einen weiteren Parameter vom Typ Position akzeptiert. Legen Sie einige der Klassen Apple, Bow, Castle, Coin, Chain, Crown, Diamond, Heart, Ring, Sword als Unterklassen von Treasure an und implementieren Sie jeweils eine konkrete show-Methode.

17 A - 17 Workshop 6 © by Software AG Klassendiagramm Element draw (abstract) ort abstract Board Position Element Car draw kennzeichen marke leistung Board Position Car print move Position Treasure Position Treasure draw Board show (abstract) Board Position Apple Position Apple show Board Position

18 A - 18 Workshop 7 © by Software AG Ziel : Stellen Sie das Spiel fertig: Fügen Sie in die Quest-Klasse ein neues Attribut elements vom Typ Element[ ] ein und instanziieren Sie die Liste im Konstruktor von Quest. Legen Sie dabei auch einige Schätze an und fügen Sie sie in die Liste ein.(bspw. elements[0] = new Apple(new Position(90,180)). Beachten Sie, dass alle x- und y-Koordinaten Vielfache von 30 im Bereich von 0 bis 420 sein sollten. Implementieren Sie folgenden Ablauf in der play-Methode:  Auto bewegen (Methode move)  Spielbrett aktualisieren (Inhalt löschen und Auto und Schätze neu zeichnen). (Methode wipe,draw) Überprüfen, ob eine Kollision des Autos mit einem Schatz stattfindet (Abfragen mittels der Methode equals in Klasse Position s.Hinweis) ist das Schloss gefunden:Schloss anzeigen und Spielende sonst: gefundenen Schatz anzeigen. Hinweis: Um Positionen auf Gleichheit zu überprüfen, kann in der Position-Klasse eine Methode equals implementiert werden, die einen Parameter vom Typ Position besitzt und als Result true/false liefert. Der Aufruf der equals-Methode erfolgt z.B. durch if (p1.equals(p2)) { … }. Übersetzen Sie alle erforderlichen Klassen und starten Sie Ihr Spiel. Optional 1 Der Spieler soll auf der Konsole über die Ausführung des Spielzugs informiert werden. Ändern Sie dazu die play-Methode in Quest ab, so dass diese ein Result-Objekt vom Typ String zurückgibt, das auf der Konsole in einem neuen Textfeld angezeigt wird. Optional 2 Legen Sie eine neue Klasse GasStation als Unterklasse von Element an. Instanziieren Sie im Konstruktor von Quest drei Instanzen von GasStation und fügen Sie sie in die ArrayList ein. Trifft das Auto bei seiner Bewegung auf eine Tankstelle, wird der Tank wieder auf 1500 Einheiten aufgefüllt. Reicht die Energie nicht aus, um den Zug auszuführen, ist das Spiel beendet.

19 A - 19 Workshop 7 © by Software AG Klassendiagramm Quest play myCar elements myBoard Position Quest Array (Element) Array int Car Element Treasure Apple Konsole Board Position

20 A - 20 © by Software AG Workshop 7 Sequenzdiagramm KonsoleQuestCarBoardArrayApple main() maintainCar() new Quest( ) print() rechts() play(Position) wipe() exit() Position draw("Car",getOrt().getX(),getOrt().getY()) show(Board,Position) draw("Apple", pos.getX(),pos.getY()) draw(Board) move(Position) new Element[13] setVisible(true) elements[..] = new Apple(new Position(..,..)) draw("Tree", getOrt().getX(),getOrt().getY() new Board( ) new Position(..,..) Werte setzen add(Position) : Position new Position( ) equals(Position) : Boolean draw("Grid",0,0) new Car( )


Herunterladen ppt "A Workshop. A - 2 Workshop © by Software AG Ziel : JBuilder kennenlernen, Anlegen der Klassen : Car, CarRace Starten Sie den JBuilder. Legen Sie ein neues."

Ähnliche Präsentationen


Google-Anzeigen