Schiffe versenken Projektdokumentation

Click here to load reader

  • date post

    02-Dec-2015
  • Category

    Documents

  • view

    35
  • download

    0

Embed Size (px)

Transcript of Schiffe versenken Projektdokumentation

Schiffe versenken Projektdokumentation

Philipp GieslerLF6 BSFIA 12BS FIA 12Schiffe versenken Projektdokumentation Lernfeld 6 Entwickeln und Bereitstellen von Anwendungssystemen

Giesler, Philipp15.05.2013

Inhaltsverzeichnis

Inhaltsverzeichnis11. Einleitung21.1. Aufgabenstellung21.2. Spielregeln21.3. Projektumfang22. Projektbeschreibung32.1. Projektaufbau32.2. Spielablauf62.3. Anforderungen63. Wichtige Funktion73.1. gegnerEinfach( )73.2. gegnerSchuss( )83.3. PAPs93.4. Kurzbeschreibung der Funktionen114. Zeitplan und Ablauf der Projektes124.1 Zeitplan124.2 Ablauf des Projektes135. Schlussbetrachtung146. Sonstiges156.1. Abbildungsverzeichnis156.2. Glossar156.3. Quellenangaben15

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 schiet dabei auf zufllige 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 (Lnge: 5 Kstchen) Ein Kreuzer (Lnge: 4 Kstchen) Zwei Zerstrer (Lnge: 3 Kstchen) Drei U-Boote (Lnge: 2 Kstchen)

Nachdem die Schiffe gesetzt wurden, wird mit dem Schieen 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 Schsse 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.

2. Projektbeschreibung

2.1. Projektaufbau

Spielfeld:

Das Spielfeld setzt sich aus zwei einzelnen Feldern zusammen (eins fr den Computer und eins frden Spieler). Ein Spielfeld hat die Gre von 10 x 10 Feldern, auf denen die Schiffe platziert undanschlieend die Schssen abgefeuert werden.

Abbildung 1 - Spielfeld

Abfragen:

Schwierigkeitsgrad

Schiff setzen

Schieen

Schsse:

Schsse werden bei einem Treffer mit # markiert. Blindgnger mit einem O.

Abbildung 2 - Spielfeld Gegner

Schiffe:

Jeder Spieler verfgt ber insgesamt 7 Schiffe: drei U-Boote: belegen je 2 Felder zwei Zerstrer: belegt 3 Felder ein Kreuzer: belegt 4 Felder ein Schlachtschiff: belegt 5 FelderSchiffe werden mit einem X auf dem Spielfeld markiert. Um das Schiff herum wird Wasser (~) gesetzt, da die Schiffe nicht aneinander gesetzt werden drfen.

Abbildung 3 - Spielfeld Spieler

Rckgabe:

Treffer

Kein Treffer

Gewonnen

Verloren

2.2. Spielablauf

1. Als erstes wird gefragt, ob der Spieler gegen den leichten oder gegen den schweren Gegner spielen mchte.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 schieen. Es wird abwechselnd geschossen. Der Spieler fngt 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 fr Windows XP (32-Bit) - Speicherplatz: 124 MB Software:

Softwarevoraussetzungen fr 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 zustzliche Software wird bentigt : - 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)

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.");}}

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, zhle den Schuss als ungltig}else{schuss = 0;}// wenn der Schuss ungltig ist, schiesse erneut}while(schuss == 0);// zeige das aktuelle SpielfeldaktuellesSpielfeld();}

3.3. Programmablaufplne

gegnerEinfach:

Abbildung 4 - PAP gegnerEinfach

gegnerSchuss:

Abbildung 5 - PAP gegnerSchuss

3.4. Kurzbeschreibung der Funktionen

gegnerEinfach:

Die Funktion gegnerEinfach( ) wird aufgerufen, wenn der Spieler zu Beginn des Spiels den einfach Schwierigkeitsgrad auswhlt. 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 fngt immer an), bis Spieler oder Gegner gewonnen hat. Zum Schluss wird ausgegeben, ob man gewonnen oder verloren hat.

gegnerSchuss:

Bei gegnerSchuss( ) wird dem Gegner ermglicht, auf das Spielfeld zu schieen. 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 schieen will, werden die Koordinaten neu bestimmt. Der Spieler muss jedoch selber darauf achten, wohin er bereits geschossen hat.

4. Zeitplan und Ablauf der Projektes

4.1 Zeitplan

AufgabeSollzeitIst

Grundstruktur1h1h

Ein- und Ausgaben3h2h

Spielfeld2.5h1.5h

Schiffe setzen ermglichen2.5h1h

Gegner einfach3h2h

Gegner schwer6h12h

Testzeit4.5h5h

Zeitpuffer6.5h6.5h

Gesamtzeit29h31h

4.2 Ablauf des Projektes

Zu Beginn des Projektes legte ich fest, wie ich es am besten aufbaue. Ich entschied mich fr 4 Klassen, Schiffe versenken (Main), Schiffe, Spielzge und Spielfeld. In Main sollen sich lediglich die Schwierigkeitsabfrage und die Aufrufe der einzelnen Spielzge befinden.In der Klasse Schiffe befinden sich nur die Angaben zur Lnge der einzelnen Schiffe. Mit Methoden zur Rckgabe der Lnge.Die Klasse Spielzge wurde dann schon grer geplant und umgesetzt. Hierin gibt es Methoden fr das Setzen der eigenen Schiffe und das der Gegnerischen. Aber auch Methoden fr das eigentliche Spiel. Die Methoden greifen dabei grtenteils auf Methoden vom Spielfeld zurck.Die Klasse Spielfeld beinhaltet zwei zweidimensionale Arrays, welche von ihren Methoden angesprochen werden. Ein Array fr das Spielerfeld und eins fr das Gegnerfeld. Methoden sind dort zum Beispiel der Schuss des Spielers/Gegners und das Setzen der Schiffe ins Array. Aber auch ein Feldstatusberprfer befindet sich in der Klasse. Dieser prft ob sich auf den bermittelten Koordinaten bereits ein Schiff befindet. Die meisten Methoden sind in hnlicher Form einmal fr den Spieler und einmal fr den Gegner vorhanden.

5. Schlussbetrachtung

6. Sonstiges

6.1. Abbildungsverzeichnis

Abbildung 1 - Spielfeld3Abbildung 2 - Spielfeld Gegner4Abbildung 3 - Spielfeld Spieler5Abbildung 4 - PAP gegnerEinfach9Abbildung 5 - PAP gegnerSchuss10

6.2. Glossar

Eclipse- Eclipse ist einquelloffenesProgrammierwerkzeug zur Entwicklung von Software verschiedenster Art.RAM- ist ein Informations-Speicher, der besonders beiComputernalsArbeitsspeicherVerwendung findet.Java - Javaist eineobjektorientierteProgrammiersprache.Array - EinFeldbezeichnet eineDatenstruktur-Variante, mit deren Verwendung viele gleichartig strukturierte Daten verarbeitet werden sollen.

6.3. Quellenangaben

Systemvoraussetzungen:http://www.java.com/de/download/help/sysreq.xmlSpielregeln:http://de.wikipedia.org/wiki/Schiffe_versenkenGlossar:http://de.wikipedia.org/15.05.2013