Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- /**
- * Schiffeversenken
- *
- * Mit diesem Programm können Sie Schiffeversenken spielen
- *
- * @author Martin Sokolowski 4632494 Gruppe 6b
- * @author George Wägele 4699233 Gruppe 6b
- *
- */
- public class Schiffeversenken {
- /**
- * Scanner um die Eingaben zu erfassen
- */
- private static Scanner s = new Scanner(System.in);
- /**
- * Zeilenangabe
- */
- private static int zeile = 0;
- /**
- * Spaltenangabe
- */
- private static int spalte = 0;
- /**
- * zaehlerA für die Anzahl der Treffer auf gegnerischen Schiffe
- */
- private static int zaehlerA = 0;
- /**
- * zaehlerD für die Anzahl der Treffer des Gegners auf eigene Schiffe
- */
- private static int zaehlerD = 0;
- /**
- * Anzahl der Felder auf denen ein Schiff liegt
- */
- private static int schiffeAnzahl = 30;
- /**
- * Eiegenes Spielfeld
- */
- private static char[][] player = {
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '#', '#', '#', '#', '.'},
- {'.', '#', '#', '#', '#', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '#', '.', '#', '.'},
- {'.', '.', '.', '#', '#', '#', '#', '.', '#', '.'},
- {'#', '#', '.', '.', '.', '.', '#', '.', '#', '.'},
- {'.', '.', '#', '#', '#', '#', '.', '.', '#', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '#', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '#', '.', '.', '.', '#', '#', '#', '#', '.'}};
- /**
- * Anzeige der Treffer auf dem gegnerischen Spielfeld
- */
- private static char[][] enemy = {
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
- {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'}};
- /**
- * Main Methode
- *
- * Hier werden die Funktionen ausgeführt
- *
- * @param args Argumente die in der Kommandezeile übergeben werden. Hier nicht benötigt!
- */
- public static void main(String[] args) {
- String aktion;
- while (true) {
- if (zaehlerA == schiffeAnzahl) { //Festellung ob man genügend Schiffe getroffen hat
- System.out.println("Du hast gewonnen!");
- System.exit(1);
- }
- if (zaehlerD == schiffeAnzahl) { //Festellung wie viele treffer erlitten wurden
- System.out.println("Du hast verloren :(");
- System.exit(1);
- }
- System.out.println("Eigenes Spielfeld: ");
- print(player); //Ausgabe des eigenen Spielfelds
- System.out.println("Gegnerisches Spielfeld: ");
- print(enemy); //Ausgabe des gegnerischen Spielfelds
- System.out.println("**- Optionen - **");
- System.out.println("* a = Attack *");
- System.out.println("* d = Defend *");
- System.out.println("* e = Exit *");
- System.out.println("*****************");
- System.out.print("Welche Aktion wollen Sie verwenden: ");
- aktion = s.next(); //Speicherung der Eingabe
- switch (aktion) {
- case "a": //Wenn a eingegeben wurde...
- attack();
- break;
- case "d": //Wenn d eingegeben wurde...
- defend();
- break;
- case "e": //Wenn e eingegeben wurde...
- System.exit(1);
- break;
- default: //Wenn weder a noch d noch e eingegeben wurde...
- System.out.println("Sie muessen a, d oder e eingeben");
- break;
- }
- }
- }
- /**
- * In der attack Methode werden die Angriffe auf das gegnerische
- * Spielfeld über die Zeilen- und Spaltenangabe eingegeben.
- * Außerdem wird für den Fall, dass getroffen wurde eine Wiederholung
- * des Vorgangs eingeleitet.
- */
- public static void attack() {
- String eingabe;
- while (true) {
- System.out.print("Geben Sie die Zeile an: ");
- zeile = s.nextInt(); //Einlesen der Zeile
- System.out.print("Geben Sie die Spalte an: ");
- spalte = s.nextInt(); //Einlesen der Spalte
- if (spalte < 10 && zeile < 10) {
- while (true) { //Zur Überprüfung von falschen Eingaben
- System.out.print("Treffer?(ja/nein): ");
- eingabe = s.next(); //Eingabe speichern
- if (eingabe.equals("ja") || eingabe.equals("nein")) {
- break;
- } else {
- System.out.println("Sie muessen ja oder nein eingeben");
- }
- }
- if (eingabe.equals("ja")) {
- zaehlerA++; //Die Anzahl der erfolgreichen attacken wird hier gezählt
- enemy[zeile][spalte] = 'X'; //getroffenes Feld wird mit einen X makiert
- print(enemy);
- if (zaehlerA == schiffeAnzahl) { //Abbruch der Schleife nach elimierung des Gegners
- break;
- }
- } else if (eingabe.equals("nein")) {
- enemy[zeile][spalte] = 'O'; //nicht getroffenes Feld wird mit einem O makiert
- break; //Abbruch der Schleife
- }
- } else {
- System.out.println("Die Spaltenzahl und/oder Zeilenzahl muss im Spielfeld enthalten sein!");
- }
- }
- }
- /**
- * In der defend Methode werden die Angriffe des Gegners auf das
- * eigene Spielfeld über die Zeilen- und Spaltenangabe eingegeben.
- */
- public static void defend() {
- while (true) {
- System.out.print("Geben Sie die Zeile an: ");
- zeile = s.nextInt();
- System.out.print("Geben Sie die Spalte an: ");
- spalte = s.nextInt();
- if (zeile < 10 && spalte < 10) { //Zeile und Spalte dürfen nicht größer als das Spielfeld sein
- if (player[zeile][spalte] == '#') { //Überprüfen ob ein Schiff getroffen wurde
- zaehlerD++; //Zähler der eigenen getroffenen Schiffe hochzählen
- player[zeile][spalte] = 'X'; //Für den Fall eines Treffers wird das Feld mit einem X makiert
- break;
- } else {
- player[zeile][spalte] = '0'; //Falls kein Treffer erzielt wird, wird das Feld durch ein O makiert
- break;
- }
- } else {
- System.out.println("Die Zeile und/oder Spalte muss im Spielfeld vorhanden sein!");
- }
- }
- }
- /**
- * In der print Methode wird das Spielfeld, dass übergeben wird
- * Mit Zeilen und Spaltenangabe ausgegeben.
- *
- * @param grid Spielfeld, dass übergeben wird
- */
- public static void print(char[][] grid) {
- System.out.println(" 0123456789"); //Angabe der Spalten
- System.out.println(" __________"); //Dient nur zur Deko
- for (int i = 0; i < 10; i++) { //Für jede Zeile
- System.out.print(i + "|"); //Angabe der Zeilen, "|" Dient nur zur Abgrenzung
- for (int j = 0; j < 10; j++) { //Für jede Spalte
- System.out.print(grid[i][j]); //Ausgabe des Chars; i=Zeile j=Spalte
- }
- System.out.print("\n"); //Zeilenumbruch am Ende der Zeile
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement