• Keine Ergebnisse gefunden

A Java Project

N/A
N/A
Protected

Academic year: 2022

Aktie "A Java Project"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktikum aus Programmierung Dr. Michael Hahsler

WS 2006/2007

Dokumentation Kanonenspiel

Gerhard Turk (9951230)

(2)

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... 5

Abbildung 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

(3)

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

(4)

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

(5)

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

(6)

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()

(7)

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

(8)

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"

(9)

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

Referenzen

ÄHNLICHE DOKUMENTE

Da für einen geübten Spieler bereits klar ist, wie gewisse Bereiche sich weiter entwickeln (ob der Gegner diese Gruppe umschliessen kann oder diese Gruppe 2 Augen bildet), wird

Die Variablen der Klasse sind nicht alle variabel. Die meisten wurden als konstant deklariert. Sie dienen nur dazu, das Spiel z.B. an mehr Karten anzupassen. Die zwei wichtigsten

Wird ein Sechser während des Spiels gewürfelt, muss eine neue Figur auf das Startfeld gestellt werden, außer alle Figuren sind schon im Spiel.. Eventuell soll es eine

Die Klassen, die für das Programm verwendet werden, sind in eigenen Subfenstern zu sehen, dabei ist die Klasse Main jene, die aktiv ist – da für den Start des Programms genau

Den Benutzern soll dabei ermöglicht werden, in einem – mit einer GUI gestalteten – Textfeld Einträge anzulegen, die automatisch mit der aktuellen Uhrzeit und dem dazugehörigen

sudo apt-get install python3-lxml sudo apt-get install python-httplib2 sudo pip3 install PyPDF2. sudo pip3

Da der Entscheid nicht umgesetzt wird und weder die Dauer seiner Gültigkeit noch seine Tragweite bekannt sind, muss er nicht auf seine Rechtmässigkeit hin

Im Jahr 2000 wurde sodann eine Motion auch nach Umwandlung in ein Postulat abgelehnt, welches die Offenlegung der Finanzen bei Wahl- und Abstimmungskampagnen im Kanton