Praktikum aus Programmierung Dr. Michael Hahsler
WS 2006/2007
Dokumentation Kanonenspiel
Gerhard Turk (9951230)
Inhaltsverzeichnis
Dokumentation... 1
Abbildungsverzeichnis ... 2
1. Problemstellung ... 3
2. Aufbau ... 3
3. Analyse und Modellierung ... 4
3.1. Use-Case ... 4
3.1.1. Use-Case Beschreibung ... 4
3.1.2. Use-Case Diagramm ... 5
3.1.3. Sequenzdiagramm ... 5
3.2. Klassendiagramm ... 6
4. Beschreibung der Klassen anhand einzelner Attribute und Methoden ... 7
5. Benützung des Programms ... 7
6. Installation und Wartung ... 9
Abbildungsverzeichnis
Abbildung 1: Use-Case Diagramm... 5Abbildung 2: Sequenzdiagramm... 5
Abbildung 3: Klassendiagramm... 6
Abbildung 4: GUI nach Start des Programms... 7
Abbildung 5: GUI nach Betätigung des "shoot-Buttons"... 8
Abbildung 6: GUI bei Treffer... 8
1. Problemstellung
Dieses Projekt wurde im Rahmen des Seminars Praktikum aus Programmierung erstellt. Die Aufgabenstellung war, ein eigenes Projekt zu finden und dieses im Laufe des Semesters zu programmieren. Diese Dokumentation handelt über das Spiel das als Kanonenspiel bekannt ist. Dieses Spiel soll zum einen für das Seminar zum anderen für Unterhaltungszwecke programmiert werden.
Das Programm wird in der Programmiersprache Java erstellt und soll das in den Seminaren gelernte wissen über dieses Programm festigen. Weiters soll über das gelernte hinaus Information beschafft werden, um das Programm mit einer GUI (Graphic User Interface) aufzuwerten.
2. Aufbau
Das Kanonen - Spiel besteht aus zwei Objekten. Eines dieser Objekte ist eine
„Abschussrampe“, die im Verlauf dieser Dokumentation aus Gründen der Klassenbezeichnungen nur mehr „Gun“ genannt wird. Das andere Objekt ist das Ziel, welches es zu treffen gilt, im folgenden nur mehr „Target“ genannt. Der Spieler hat nun die Möglichkeit von der Gun aus einen Schuss abzugeben, welchen er durch die Eingabe von Winkel und Geschwindigkeit steuern kann. Das Ziel des Spiels ist das Treffen des Targets.
Das ganze Spiel läuft iauf einem „Panel“ ab, welches ausgibt wo das Target steht, da sich die Entfernung bei jedem Neustart verändert. Auf diesem Panel kann man dann die Geschwindigkeit und den Winkel eingeben. Danach erfolgt eine Ausgabe die dem Spieler sagt, welche Weite der Schuss erreicht hat und ob das Target getroffen wurde oder nicht.
Der Spieler kann solange die Geschwindigkeit und den Winkel verändern bis er nicht mehr spielen möchte. Auch bei treffen des Targets gibt es keinen automatischen Abbruch.
Abgebrochen werden kann das Spiel, durch Schliessen des Fensters. Bei einem Neustart wird das Target neu gesetzt und der Spieler kann sein Glück ein weiteres Mal versuchen.
3
3. Analyse und Modellierung
3.1. Use-Case
Das Use-Case Diagramm wird angeführt um die Zusammenhänge zwischen dem zu erstellenden Programm und etwaigen mitwirkenden Personen aufzuzeigen. Dieses Diagramm sollte so einfach wie möglich gehalten werden und nur wenig unterschiedliche Attribute erhalten, damit dieses Diagramm einfach und übersichtlich bleibt um auch branchenfremden Personen die Möglichkeit zu bieten, die zukünftige Benutzung des Programms zu verstehen.
3.1.1. Use-Case Beschreibung Use-Case Name: Kanonenspiel
Akteur: Spieler
Vorbedingungen: Aufgedrehter PC; Java Compiler vorhanden; eclipse installiert Auslöser: Der Wunsch ein Geschicklichkeitsspiel zu spielen
Ablaufbeschreibung:
• Ein Spieler will spielen
• Der Spieler startet das Spiel
• Das Spiel gibt dem Spieler die Entfernung des Targets, welches der Spieler treffen muss
• Der Spieler gibt dann Geschwindigkeit und Winkel ein um auf die entsprechende Weite des Targets zu kommen
• Er wiederholt den Vorgang so lange er Lust hat
• Möchte der Spieler eine andere Entfernung muss er das Spiel neu starten
• Möchte der Spieler aufhören beendet er das Spiel
Instanz: Gerhard möchte seinen Sinn für Entfernungen, Geschwindigkeiten und Winkel schärfen. Deshalb setzt er sich an den Computer um eine Runde mit dem Kanonenspiel
3.1.2. Use-Case Diagramm
3.1.3. Sequenzdiagramm
Abbildung 2: Sequenzdiagramm 5
sd spielen :Spieler
:Starten
starten()
:Spiel
neu()
Target Gun
erstellt
erstellt schießen()
berechnen nicht getroffen schießen()
berechnen getroffen Spiel beenden
Abbildung 1: Use-Case Diagramm
Kanonenspiel
spielen
3.2. Klassendiagramm
GrafikCanvas
paint()
Objekt
getKoordinaten() koord_x0;
koord_y0;
koord_x1;
koord_x1;
Spielen
double w, g;
Gun myGun;
Target myTarget;
JFrame spielFrame;
JPanel spielPanel;
JTextField geschwindigkeit;
JTextField winkelEingabe;
JLabel geschwindigkeitsLabel, winkelLabel, zielLabel, entfernungLabel,
ergebnisLabel;
JButton shootButton;
Spielen() addWidgets() isTreffer()
createAndShowGUI()
Starten
main()
4. Beschreibung der Klassen anhand einzelner Attribute und Methoden
Gun: In dieser Klasse entsteht das Gun-Objekt. Gun ist eine Subklasse von der Superklasse Objekt. Es werden die Koordinaten auf der diese Gun platziert ist mitgegeben.
Target: Ist die Klasse in der das Target seine Koordinaten mitbekommt. Es gibt hier auch die Methode setzeZiel (), die dafür verantwortlich ist, dass sich das Target von Spiel zu Spiel verändert. Da sie die erste x Koordinate immer an einen anderen Punkt setzt in einem bestimmten vorgegebenen Spielrahmen.
Spielen: Zuerst wird ein Frame erzeugt in dem ein Panel erzeugt wird. Dieser Panel ist in ein Gridmodell aufgespalten in dem weitere Labels untergebracht sind. Diese Labels sind:
geschwindigkeitsLabel, winkelLabel, zielLabel, entfernungLabel, ergebnisLabel. Desweiteren gibt es einen Button der den Abschussvorgang initialisiert. In dieser Klasse werden auch die Berechnungen, für die Werte, wie weit geschossen wurde und ob das Ziel getroffen wurde berechnet. Um die Eingabe für die Geschwindigkeit und den Winkel tätigen zu können gibt es noch zwei Textfields diese sind geschwindigkeit und winkelEingabe. Dort kann man die Geschwindigkeit die das Geschoss haben soll und den Neigungswinkel eingeben. Danach findet die Berechnung statt, wie weit das Objekt geflogen ist und ob das Ziel getroffen wurde.
GrafikCanvas: Erzeugt einen Rahmen in dem die Gun als Punkt und das Target als Strich dargestellt wird.
Starten: Enthält die Main-Methode um das Spiel zu starten es wird die Methode spielen aufgerufen und das Spiel startet das Frame und das Spiel ist funktionsbereit.
5. Benützung des Programms
Nach dem Starten des Programms wird folgendes Fenster angezeigt:
7 Abbildung 4: GUI nach Start
des Programms
Man sieht, das in der obersten Zeile der Standort des Zieles ausgegeben wird. Darunter das Feld wo Geschwindigkeit steht und im Anschluss daran, das Eingabefeld für die Geschwindigkeit. Danach das selbe für den Winkel. Erst die Beschreibung und dann das Eingabefeld. Darunter befindet sich der Button „shoot“, den man drücken kann um das Geschoss abzufeuern. Aber es funktioniert auch einfach mit der Eingabetaste.
Nach dem eingeben von Geschwindigkeit und Winkel und anschließendem drücken des
„shoot-Button“ :
Es erfolgt die Ausgabe wie weit geschossen wurde und das das Ziel verfehlt wurde. In der nächsten Abbildung wurde das Target getroffen:
Abbildung 5: GUI nach
Betätigung des "shoot-Buttons"
Hier ist die Ausgabe nach dem Eingeben von Winkel und Geschwindigkeit, wenn das Target getroffen wurde.
6. Installation und Wartung
Das Programm wird in einem Javacode fähigem Programm installiert und kann im Anschluss gestartet und ausgeführt werden. Es öffnet sich das Fenster für die Bedienung des Spieles und es kann gespielt werden. Gewartet braucht dieses Programm nicht zu werden. Einige Fehler die sich aufgrund der Berechnungen der Formel für die Schussweite ergeben haben, wie, die nicht menschengerechte Anwendung von sin, cos und tan Funktionen, wurden im Verlauf der Implementation herausgefunden und an Grad-Masse angepasst. Ein weiteres Problem und zwar das Zeichnen der Parabel der Flugbahn konnte nicht gelöst werden zumindest auf Graphischer Ebene, deshalb wurde die Berechnung der y-Koordinaten an einem bestimmten Punkt von x nur auf textueller Basis ausgeführt.
9