Schiffe versenken Projektdokumentation
-
Upload
candice-gomez -
Category
Documents
-
view
55 -
download
0
Embed Size (px)
Transcript of Schiffe versenken Projektdokumentation

BS FIA 12
Schiffe versenken Projektdokumentation
Lernfeld 6 Entwickeln und Bereitstellen von Anwendungssystemen
Giesler, Philipp15.05.2013

1
Philipp Giesler LF6 BSFIA 12
Inhaltsverzeichnis
Inhaltsverzeichnis...............................................................................................................................1
1. Einleitung........................................................................................................................................2
1.1. Aufgabenstellung.....................................................................................................................2
1.2. Spielregeln...............................................................................................................................2
1.3. Projektumfang.........................................................................................................................2
2. Projektbeschreibung.......................................................................................................................3
2.1. Projektaufbau..........................................................................................................................3
2.2. Spielablauf...............................................................................................................................6
2.3. Anforderungen........................................................................................................................6
3. Wichtige Funktion..........................................................................................................................7
3.1. gegnerEinfach( ).......................................................................................................................7
3.2. gegnerSchuss( )........................................................................................................................8
3.3. PAPs.........................................................................................................................................9
3.4. Kurzbeschreibung der Funktionen.........................................................................................11
4. Zeitplan und Ablauf der Projektes................................................................................................12
4.1 Zeitplan...................................................................................................................................12
4.2 Ablauf des Projektes...............................................................................................................13
5. Schlussbetrachtung.....................................................................................................................14
6. Sonstiges......................................................................................................................................15
6.1. Abbildungsverzeichnis...........................................................................................................15
6.2. Glossar...................................................................................................................................15
6.3. Quellenangaben....................................................................................................................15
15.05.2013

2
Philipp Giesler LF6 BSFIA 12
1. Einleitung
1.1. Aufgabenstellung
Im Rahmen des Unterrichts soll eine in Java programmierte Version von Schiffe versenken erstellt werden. Es soll einen leichten und einen schweren Gegner geben. Der leichte schießt dabei auf zufällige Positionen des Spielfeldes. Der schwere Gegner soll das Schiff bei Treffer dann auch versenken.
1.2. Spielregeln
Sowohl Spieler als auch Gegner haben insgesamt sieben Schiffe. Dabei wird zwischen vier Typen unterschieden:
- Ein Schlachtschiff (Länge: 5 Kästchen)- Ein Kreuzer (Länge: 4 Kästchen)- Zwei Zerstörer (Länge: 3 Kästchen)- Drei U-Boote (Länge: 2 Kästchen)
Nachdem die Schiffe gesetzt wurden, wird mit dem Schießen begonnen. Es wird abwechselnd geschossen. Wenn man an eine Position bereits geschossen hat, kann diese trotzdem noch beschossen werden. Der Spieler muss wie bei der klassischen Variante des Spiels darauf achten, wo er bereits hin geschossen hat, allerdings werden ihm seine Schüsse angezeigt.
1.3. Projektumfang
Der Umfang des Projektes erstreckt sich von der Programmierung des Spieles, über das Testen derFunktionen bis hin zur Dokumentation und Beschreibung des Projektes.
15.05.2013

3
Philipp Giesler LF6 BSFIA 12
2. Projektbeschreibung
2.1. Projektaufbau
Spielfeld:
Das Spielfeld setzt sich aus zwei einzelnen Feldern zusammen (eins für den Computer und eins fürden Spieler). Ein Spielfeld hat die Größe von 10 x 10 Feldern, auf denen die Schiffe platziert undanschließend die Schüssen abgefeuert werden.
Abbildung 1 - Spielfeld
15.05.2013

4
Philipp Giesler LF6 BSFIA 12
Abfragen:
- Schwierigkeitsgrad
- Schiff setzen
- Schießen
Schüsse:
Schüsse werden bei einem Treffer mit ‘#‘ markiert. Blindgänger mit einem ‘O‘.
Abbildung 2 - Spielfeld Gegner
15.05.2013

5
Philipp Giesler LF6 BSFIA 12
Schiffe:
Jeder Spieler verfügt über insgesamt 7 Schiffe:
- drei U-Boote: belegen je 2 Felder- zwei Zerstörer: belegt 3 Felder- ein Kreuzer: belegt 4 Felder- ein Schlachtschiff: belegt 5 Felder
Schiffe werden mit einem ‘X‘ auf dem Spielfeld markiert. Um das Schiff herum wird Wasser (‘~‘) gesetzt, da die Schiffe nicht aneinander gesetzt werden dürfen.
Abbildung 3 - Spielfeld Spieler
Rückgabe:
- Treffer
- Kein Treffer
- Gewonnen
- Verloren
15.05.2013

6
Philipp Giesler LF6 BSFIA 12
2.2. Spielablauf
1. Als erstes wird gefragt, ob der Spieler gegen den leichten oder gegen den schweren Gegner spielen möchte.
2. Danach setzt der Gegner seine Schiff, welche man als Spieler logischerweise nicht sieht.3. Nun kann der Spieler seine Schiffe setzen.4. Sobald der Spieler seine Schiffe gesetzt hat, wird begonnen zu schießen. Es wird abwechselnd
geschossen. Der Spieler fängt an.5. Sobald Spieler oder Gegner alle Schiffe versenkt hat, ist das Spiel vorbei.
2.3. Anforderungen
Hardware:
Voraussetzungen die ein PC, welcher die minimalsten Systemvoraussetzungen von Java besitzt:
- RAM: 128 MB; 64 MB für Windows XP (32-Bit)
- Speicherplatz: 124 MB
Software:
Softwarevoraussetzungen für Java lt. Hersteller:
- Windows 8 (Desktop)
- Windows 7
- Windows Vista SP 2
- Windows XP SP3 (32-Bit); Windows XP SP2 (64-Bit)
- Windows Server 2008
- Windows Server 2012 (64-Bit)
Folgende zusätzliche Software wird benötigt :
- Java IDE: Eclipse (Release 4.2.0)
- Java JRE: Java 6 Update 39 (Version 6.0.390)
- Java JDK: Java SE Development Kit 6 Update 32 (Version 1.6.0.320)
15.05.2013

7
Philipp Giesler LF6 BSFIA 12
3. Wichtige Funktion
3.1. gegnerEinfach( )
public static void gegnereinfach(){
boolean gegner = false;boolean spieler = false;
// setze alle SchiffegegnerSchiff(1);gegnerSchiff(2);gegnerSchiff(3);gegnerSchiff(3);gegnerSchiff(4);gegnerSchiff(4);gegnerSchiff(4);// zeige danach das aktuelle Spielfeld anSpielfeld.aktuellesSpielfeld();
// mache solange keiner gewonnen hatdo{
// Spieler darf zuerst schiessen spielerSchiessen();// schaue ob der Spieler nach Schuss gewonnen hatspieler = Spielfeld.getWinner(1);// wenn der Spieler noch nicht gewonnen hatif(spieler != true){
// lasse den Gegner schiessenSpielfeld.gegnerSchuss();// schaue ob Gegner gewonnen hatgegner = Spielfeld.getWinner(2);
}
}while(spieler == false && gegner == false);
// wenn der Spieler gewonnen hatif(spieler == true){
System.out.println("Sie haben Gewonnen. Gratuliere.");// wenn der Gegner gewonnen hat}else{
System.out.println("Tut mir leid. Sie haben verloren.");}
}
15.05.2013

8
Philipp Giesler LF6 BSFIA 12
3.2. gegnerSchuss( )
// Methode womit der Gegner aufs Spielerfeld schiessen kannpublic static void gegnerSchuss(){
int ykoordinate = 0;int xkoordinate = 0;int schuss = 0;
do{
// bestimme random die Schusskoordinaten
ykoordinate = (int) (Math.random()*9+1);xkoordinate = (int) (Math.random()*9+1);xkoordinate = xkoordinate -1;ykoordinate = ykoordinate -1;
// wenn das Feld leer ist oder mit ~ makiert ist, dann makiere es mit O
if(spielerfeld[ykoordinate][xkoordinate] == ' ' || spielerfeld[ykoordinate][xkoordinate] == '~'){
spielerfeld[ykoordinate][xkoordinate] = 'O';schuss = 1;
// wenn auf dem Feld ein X ist, dann makiere es mit # und gebe aus, dass der Gegner eins deiner Schiffe getroffen hat
}else if(spielerfeld[ykoordinate][xkoordinate] == 'x'){
spielerfeld[ykoordinate][xkoordinate] = '#';System.out.println("Der Gegner hat eins deiner Schiffe
getroffen!");schuss = 1;
// wenn er bereits auf die Koordinate geschossen hat, zähle den Schuss als ungültig
}else{schuss = 0;
}// wenn der Schuss ungültig ist, schiesse erneut}while(schuss == 0);// zeige das aktuelle SpielfeldaktuellesSpielfeld();
}
15.05.2013

9
Philipp Giesler LF6 BSFIA 12
3.3. Programmablaufpläne
gegnerEinfach:
15.05.2013

10
Philipp Giesler LF6 BSFIA 12
Abbildung 4 - PAP gegnerEinfach
gegnerSchuss:
15.05.2013

11
Philipp Giesler LF6 BSFIA 12
Abbildung 5 - PAP gegnerSchuss
3.4. Kurzbeschreibung der Funktionen
15.05.2013

12
Philipp Giesler LF6 BSFIA 12
gegnerEinfach:
Die Funktion gegnerEinfach( ) wird aufgerufen, wenn der Spieler zu Beginn des Spiels den einfach Schwierigkeitsgrad auswählt. Die Funktion setzt zuerst den Spieler und den Gegner auf „false“, da noch keiner gewonnen hat. Danach werden die Schiffe vom Gegner gesetzt. Dann wird solange abwechselnd geschossen (der Spieler fängt immer an), bis Spieler oder Gegner gewonnen hat. Zum Schluss wird ausgegeben, ob man gewonnen oder verloren hat.
gegnerSchuss:
Bei gegnerSchuss( ) wird dem Gegner ermöglicht, auf das Spielfeld zu schießen. Dabei werden die Koordinaten per Zufall bestimmt. Trifft er ein Schiff, so wird dieses mit einer Raute makiert. Trifft er jedoch nicht, so wird ein O gesetzt. Wenn der Gegner auf einen bereits beschossenen Punkt schießen will, werden die Koordinaten neu bestimmt. Der Spieler muss jedoch selber darauf achten, wohin er bereits geschossen hat.
4. Zeitplan und Ablauf der Projektes
15.05.2013

13
Philipp Giesler LF6 BSFIA 12
4.1 Zeitplan
Aufgabe Sollzeit Ist
Grundstruktur 1h 1h
Ein- und Ausgaben 3h 2h
Spielfeld 2.5h 1.5h
Schiffe setzen ermöglichen
2.5h 1h
Gegner einfach 3h 2h
Gegner schwer 6h 12h
Testzeit 4.5h 5h
Zeitpuffer 6.5h 6.5h
Gesamtzeit 29h 31h
4.2 Ablauf des Projektes
Zu Beginn des Projektes legte ich fest, wie ich es am besten aufbaue. Ich entschied mich für 4 Klassen, Schiffe versenken (Main), Schiffe, Spielzüge und Spielfeld.
15.05.2013

14
Philipp Giesler LF6 BSFIA 12
In „Main“ sollen sich lediglich die Schwierigkeitsabfrage und die Aufrufe der einzelnen Spielzüge befinden.
In der Klasse „Schiffe“ befinden sich nur die Angaben zur Länge der einzelnen Schiffe. Mit Methoden zur Rückgabe der Länge.
Die Klasse „Spielzüge“ wurde dann schon größer geplant und umgesetzt. Hierin gibt es Methoden für das Setzen der eigenen Schiffe und das der Gegnerischen. Aber auch Methoden für das eigentliche Spiel. Die Methoden greifen dabei größtenteils auf Methoden vom Spielfeld zurück.
Die Klasse „Spielfeld“ beinhaltet zwei zweidimensionale Arrays, welche von ihren Methoden angesprochen werden. Ein Array für das Spielerfeld und eins für das Gegnerfeld. Methoden sind dort zum Beispiel der Schuss des Spielers/Gegners und das Setzen der Schiffe ins Array. Aber auch ein Feldstatusüberprüfer befindet sich in der Klasse. Dieser prüft ob sich auf den übermittelten Koordinaten bereits ein Schiff befindet. Die meisten Methoden sind in ähnlicher Form einmal für den Spieler und einmal für den Gegner vorhanden.
5. Schlussbetrachtung
15.05.2013

15
Philipp Giesler LF6 BSFIA 12
6. Sonstiges
6.1. Abbildungsverzeichnis
15.05.2013

16
Philipp Giesler LF6 BSFIA 12
Abbildung 1 - Spielfeld...........................................................................................................................3Abbildung 2 - Spielfeld Gegner...............................................................................................................4Abbildung 3 - Spielfeld Spieler................................................................................................................5Abbildung 4 - PAP gegnerEinfach...........................................................................................................9Abbildung 5 - PAP gegnerSchuss..........................................................................................................10
6.2. Glossar
Eclipse - Eclipse ist ein quelloffenes Programmierwerkzeug zur Entwicklung von Software verschiedenster Art.
RAM- ist ein Informations-Speicher, der besonders bei Computern als Arbeitsspeicher Verwendung findet.
Java - Java ist eine objektorientierte Programmiersprache.
Array - Ein Feld bezeichnet eine Datenstruktur-Variante, mit deren Verwendung „viele gleichartig strukturierte Daten verarbeitet werden sollen“.
6.3. Quellenangaben
Systemvoraussetzungen:http://www.java.com/de/download/help/sysreq.xml
Spielregeln:http://de.wikipedia.org/wiki/Schiffe_versenken
Glossar:http://de.wikipedia.org/
15.05.2013