20
BS FIA 12 Schiffe versenken Projektdokumen tation Lernfeld 6 Entwickeln und Bereitstellen von Anwendungssystemen Giesler, Philipp 15.05.2013

Schiffe versenken Projektdokumentation

Embed Size (px)

Citation preview

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