• Keine Ergebnisse gefunden

Versuchsziele Kenntnisse in der Anwendung von: •

N/A
N/A
Protected

Academic year: 2021

Aktie "Versuchsziele Kenntnisse in der Anwendung von: •"

Copied!
5
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

1 Hochschule Harz FB Automatisierung und Informatik

Programmierung2 Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm Aufgabe 10: „Programmierung 2“ für MI / WI

Thema: Abstrakte Fabrik

Versuchsziele

Kenntnisse in der Anwendung von:

• Abstrakten Fabriken

Aufgabe10:

In dieser Aufgabe soll mit Hilfe einer abstrakten Fabrik ein Rollenspiel mit drei verschiedenen Welten programmiert werden:

• Robin Hood gegen den Sheriff von Nottingham im Wald (Sherwood Forest)

• Skywalker Darth Vader im Weltall (Stern Galaktika)

• Messi Ronaldo in Spanien auf einem Fußballfeld

Madrid oder Barcelona

Interfaces:

• IPerson

• IWaffe

• IOrt

Abstrakter Generator:

• IPerson getPerson1()

• IPerson getPerson2()

• IWaffe getWaffe1()

• IWaffe getWaffe2()

• IOrt getOrt()

Aufgaben

1. Teilaufgabe: Projekt erstellen und aufbauen:

• Projektname: Aufgabe10

Abbildung 1 Überblick der GUI: Aufgabe10

• Im Projekt soll der vorgegeben Quellcode eingebaut werden:

o Homepage,

Name:Aufgabe10.txt.

Name: Arena.txt (nicht identisch mit Tutorial10.java)

(2)

2 2. Teilaufgabe: Interfaces erstellen

In dieser Aufgabe sollen die Schnittstellen und der abstrakte Generatoren implementiert werden:

• Erstellen der Schnittstellen:

o IPerson

String getName();

o IWaffe

String getName();

int kaempfe(IWaffe waffe); // ruft getValue auf, 2x

int getValue(); // gibt den aktuellen „Waffenwert“ zurück

o IOrt

String getName();

o Abstrakter Generator:

Name: Generator Methoden:

• getPerson1();

• getPerson2();

• getWaffe1();

• getWaffe2();

• getOrt();

(3)

3 3. Teilaufgabe: Reale Klasse für die Interfaces erstellen

Diese Klassen sind nun wesentlich komplexer:

Hinweis:

Implementieren Sie erst mal EINE Variante.

Spiel England:

o Person1/2:

Klasse Pers_England

• (Unterschied per Parameter) Attribut: String name

o Waffe:

Klasse PfeilBogen

Hat keine Attribute, muss aber trotzdem als Namen „PfeilBogen“ zurückgeben.

o Waffe:

Klasse Schwert_Schild

Hat keine Attribute, muss aber trotzdem als Namen „Schwert_Schild“ zurückgeben.

o Ort:

Klasse Wald

Attribut: String Name

• Wert: Sherwood Forest

Spiel Weltall:

o Person1/2:

Klasse Pers_Weltall

• (Unterschied per Parameter) Attribut: String name

o Waffe:

Klasse Laser o Ort:

Klasse Weltall

Attribut: String Name

• Wert: „Stern Galaktita“

Spiel Spanien o Person1/2:

Klasse Pers_Spanien

• (Unterschied per Parameter) Attribut: String name

o Waffe:

Klasse Ball

Hat keine Attribute, muss aber trotzdem als Namen „Fußball“ zurückgeben.

o Ort:

Klasse Rasen

Attribut: String Name

• Wert: Madrid oder Barcelona (mit Math.random())

(4)

4 4. Teilaufgabe: Reale Generatoren erstellen

In dieser Aufgabe sollen die realen Generatoren implementiert werden:

• realer Generator:

o Name: „Gen_England“

o Methoden (die Rückgabetypen wurde leider gelöscht):

getPerson1(); Pers_England (Robin Hood)

getPerson2(); Pers_England (Sheriff von Nottingham) getWaffe1(); PfeilBogen

getWaffe2(); Schwert_Schild

getOrt(); Wald (Sherwood Forest)

• realer Generator:

o Name: „Gen_Starwars“

o Methoden:

getPerson1(); Pers_Weltall Skywalker getPerson2(); Pers_ Weltall Darth Vader getWaffe1(); Laser

getWaffe2(); Laser

getOrt(); Weltall („Stern Galaktita“)

• realer Generator:

o Name: „Gen_England“

o Methoden:

getPerson1(); Pers_Spanien Messi getPerson2(); Pers_Spanien Ronaldo getWaffe1(); Ball

• Name: Fußball

getWaffe2(); Ball

• Name: Fußball

getOrt(); Rasen

• mit Zufallsgenerator entweder Barcelona oder Madrid.

5. Teilaufgabe: Kampf-Methode implementieren:

Um einen „echten“ Kampf zu simulieren, muss man zwei Waffen verknüpfen.

• In der Klasse „Arena“ werden neben anderen Objekten zwei Waffen übergeben.

Jede Waffe hat folgende Methoden:

o int kaempfe(IWaffe waffe);

o int getValue();

Methode getValue:

o Hier wird mit einer aktuelle Zufallszahl der „Kampfwert“ ermittelt.

o Der Kampfwert sollte zwischen 0 und 100 liegen

return (int) (Math.random()*2); // Nur ein Beispielcode

Methode kaempfe:

o Diese Methode erhält als Parameter die gegnerische Waffe.

o Es wird die eigene „getValue“- und die gegnerische getValue aufgerufen.

o Aus diesen beiden Werten wird die Differenz gebildet.

o Ist die Differenz größer als 60, hat Person1 gewonnen. Dann wird eine +1 zurückgegeben.

o Ist die Differenz kleiner als 60, hat Person2 gewonnen. Dann wird eine -1 zurückgegeben.

o Ansonsten wird eine Null zu zurückgegeben.

(5)

5 6. Teilaufgabe: Reale Klasse „Arena“ erstellen

In dieser Klasse sollen das „Spiel“ verknüpft und gestartet werden:

• Einbau der Klasse „Arena“ von meiner Homepage.

• Bitte die Arena-Klasse für die Hausaufgabe benutzen.

• Verknüpfen der drei Events in der Klasse „Aufgabe10.java o Erzeugen der realen Generatoren

o Weiterleiten an die Arena

• Klasse Arena:

o In einem Timer-Event „kaempfe_click“ wird die Methode „kaempfe“ der ersten Person aufgerufen. Diese Methode erhält aber als Parameter die Waffe der zweiten Person.

o Der Rückgabewert „w1.kaempfe(w2)“ wird nun ausgewertet.

o Wenn der Wert ungleich Null, stoppt der Timer und der Gewinner wird ausgegeben.

o Der „Kampfwert sollte aber immer ausgegeben werden.

Testbilder:

Referenzen

ÄHNLICHE DOKUMENTE

In dieser Aufgabe werden verschiedene Objekte in einer ArrayList gespeichert, deren Summe berechnet und ausgegeben.. • Ändern Sie den Quellcode mittels einer Abfrage, so dass

• Erstellen Sie einen neuen Kontainer für Strings mittels der GenKlasse als Template.

• Ermitteln Sie die Distanz zum Suchobjekt mit Mathematik (Pythagoras).. o Es kann auch der „Mausklick“ mittels zweier Variablen gezeichnet werden. o Falls das „U-Boot“

• Zeichen Sie eine roten Punkt, wenn der Rest gleich Null ist. • Nach den erfolgreichen Tests setzen Sie die BREITE auf 500. • Nach den erfolgreichen Tests setzen Sie die HOEHE

• Verknüpfen Sie die drei Schalter mit einem ActionListener und jeweils einer Methode o Beispiel1:. Ausgabe im Editor: Beispiel1 o

In dieser Aufgabe soll ein einfaches Fenster erstellt werden und drei Schalter mit einfachen Aktionen verknüpft werden. Teilaufaufgaben:

• Die unteren JSpinner haben jeweils einen „Prozentwert“ von 50%. • Bitte beachten Sie die unterschiedliche Spaltenzuordnung des ersten JSpinners in der

Danach sollen verschiedene Mitarbeiter mittels einer Methode „search2“ gesucht und im Editor ausgegeben