Advertisement
Guest User

Untitled

a guest
Nov 28th, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.21 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. /**
  4.  * Schiffeversenken
  5.  *
  6.  * Mit diesem Programm können Sie Schiffeversenken spielen
  7.  *
  8.  * @author Martin Sokolowski 4632494 Gruppe 6b
  9.  * @author George Wägele 4699233 Gruppe 6b
  10.  *
  11.  */    
  12. public class Schiffeversenken {
  13.     /**
  14.      * Scanner um die Eingaben zu erfassen
  15.      */
  16.     private static Scanner s = new Scanner(System.in);
  17.     /**
  18.      * Zeilenangabe
  19.      */
  20.     private static int zeile = 0;
  21.     /**
  22.      * Spaltenangabe
  23.      */
  24.     private static int spalte = 0;
  25.     /**
  26.      * zaehlerA für die Anzahl der Treffer auf gegnerischen Schiffe
  27.      */
  28.     private static int zaehlerA = 0;
  29.     /**
  30.      * zaehlerD für die Anzahl der Treffer des Gegners auf eigene Schiffe
  31.      */
  32.     private static int zaehlerD = 0;
  33.     /**
  34.      * Anzahl der Felder auf denen ein Schiff liegt
  35.      */
  36.     private static int schiffeAnzahl = 30;
  37.     /**
  38.      * Eiegenes Spielfeld
  39.      */
  40.     private static char[][] player = {
  41.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  42.         {'.', '.', '.', '.', '.', '#', '#', '#', '#', '.'},
  43.         {'.', '#', '#', '#', '#', '.', '.', '.', '.', '.'},
  44.         {'.', '.', '.', '.', '.', '.', '#', '.', '#', '.'},
  45.         {'.', '.', '.', '#', '#', '#', '#', '.', '#', '.'},
  46.         {'#', '#', '.', '.', '.', '.', '#', '.', '#', '.'},
  47.         {'.', '.', '#', '#', '#', '#', '.', '.', '#', '.'},
  48.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  49.         {'.', '#', '.', '.', '.', '.', '.', '.', '.', '.'},
  50.         {'.', '#', '.', '.', '.', '#', '#', '#', '#', '.'}};
  51.     /**
  52.      * Anzeige der Treffer auf dem gegnerischen Spielfeld
  53.      */
  54.     private static char[][] enemy = {
  55.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  56.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  57.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  58.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  59.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  60.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  61.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  62.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  63.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
  64.         {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'}};
  65.      
  66.     /**
  67.      * Main Methode
  68.      *
  69.      * Hier werden die Funktionen ausgeführt  
  70.      *
  71.      * @param args Argumente die in der Kommandezeile übergeben werden. Hier nicht benötigt!
  72.      */
  73.     public static void main(String[] args) {
  74.         String aktion;
  75.         while (true) {
  76.             if (zaehlerA == schiffeAnzahl) {        //Festellung ob man genügend Schiffe getroffen hat
  77.                 System.out.println("Du hast gewonnen!");
  78.                 System.exit(1);
  79.             }
  80.             if (zaehlerD == schiffeAnzahl) {        //Festellung wie viele treffer erlitten wurden
  81.                 System.out.println("Du hast verloren :(");
  82.                 System.exit(1);
  83.             }
  84.             System.out.println("Eigenes Spielfeld: ");
  85.             print(player); //Ausgabe des eigenen Spielfelds
  86.             System.out.println("Gegnerisches Spielfeld: ");
  87.             print(enemy);  //Ausgabe des gegnerischen Spielfelds
  88.             System.out.println("**- Optionen - **");
  89.             System.out.println("*   a = Attack  *");
  90.             System.out.println("*   d = Defend  *");
  91.             System.out.println("*   e = Exit    *");
  92.             System.out.println("*****************");
  93.             System.out.print("Welche Aktion wollen Sie verwenden: ");
  94.             aktion = s.next();           //Speicherung der Eingabe
  95.             switch (aktion) {
  96.                 case "a":                   //Wenn a eingegeben wurde...
  97.                     attack();
  98.                     break;
  99.                 case "d":                   //Wenn d eingegeben wurde...
  100.                     defend();
  101.                     break;
  102.                 case "e":                   //Wenn e eingegeben wurde...
  103.                     System.exit(1);
  104.                     break;
  105.                 default:                    //Wenn weder a noch d noch e eingegeben wurde...
  106.                     System.out.println("Sie muessen a, d oder e eingeben");
  107.                     break;
  108.             }
  109.         }
  110.     }
  111.  
  112.     /**
  113.      * In der attack Methode werden die Angriffe auf das gegnerische
  114.      * Spielfeld über die Zeilen- und Spaltenangabe eingegeben.
  115.      * Außerdem wird für den Fall, dass getroffen wurde eine Wiederholung
  116.      * des Vorgangs eingeleitet.
  117.      */
  118.     public static void attack() {
  119.         String eingabe;
  120.         while (true) {
  121.             System.out.print("Geben Sie die Zeile an: ");
  122.             zeile = s.nextInt();        //Einlesen der Zeile
  123.             System.out.print("Geben Sie die Spalte an: ");
  124.             spalte = s.nextInt();       //Einlesen der Spalte
  125.             if (spalte < 10 && zeile < 10) {
  126.                 while (true) { //Zur Überprüfung von falschen Eingaben
  127.                     System.out.print("Treffer?(ja/nein): ");
  128.                     eingabe = s.next();         //Eingabe speichern
  129.                     if (eingabe.equals("ja") || eingabe.equals("nein")) {
  130.                         break;
  131.                     } else {
  132.                         System.out.println("Sie muessen ja oder nein eingeben");
  133.                     }
  134.                 }
  135.                 if (eingabe.equals("ja")) {
  136.                     zaehlerA++;             //Die Anzahl der erfolgreichen attacken wird hier gezählt
  137.                     enemy[zeile][spalte] = 'X';     //getroffenes Feld wird mit einen X makiert
  138.                     print(enemy);
  139.                     if (zaehlerA == schiffeAnzahl) { //Abbruch der Schleife nach elimierung des Gegners
  140.                         break;
  141.                     }
  142.                 } else if (eingabe.equals("nein")) {
  143.                     enemy[zeile][spalte] = 'O'; //nicht getroffenes Feld wird mit einem O makiert
  144.                     break;                      //Abbruch der Schleife
  145.                 }
  146.             } else {
  147.                 System.out.println("Die Spaltenzahl und/oder Zeilenzahl muss im Spielfeld enthalten sein!");
  148.             }
  149.         }
  150.     }
  151.  
  152.     /**
  153.      * In der defend Methode werden die Angriffe des Gegners auf das
  154.      * eigene Spielfeld über die Zeilen- und Spaltenangabe eingegeben.
  155.      */
  156.     public static void defend() {
  157.         while (true) {
  158.             System.out.print("Geben Sie die Zeile an: ");
  159.             zeile = s.nextInt();                  
  160.             System.out.print("Geben Sie die Spalte an: ");
  161.             spalte = s.nextInt();
  162.             if (zeile < 10 && spalte < 10) {        //Zeile und Spalte dürfen nicht größer als das Spielfeld sein
  163.                 if (player[zeile][spalte] == '#') { //Überprüfen ob ein Schiff getroffen wurde
  164.                     zaehlerD++;                     //Zähler der eigenen getroffenen Schiffe hochzählen
  165.                     player[zeile][spalte] = 'X';    //Für den Fall eines Treffers wird das Feld mit einem X makiert
  166.                     break;
  167.                 } else {
  168.                     player[zeile][spalte] = '0';    //Falls kein Treffer erzielt wird, wird das Feld durch ein O makiert
  169.                     break;
  170.                 }
  171.             } else {
  172.                 System.out.println("Die Zeile und/oder Spalte muss im Spielfeld vorhanden sein!");
  173.             }
  174.         }
  175.    
  176.     }
  177.    
  178.     /**
  179.      * In der print Methode wird das Spielfeld, dass übergeben wird
  180.      * Mit Zeilen und Spaltenangabe ausgegeben.
  181.      *
  182.      * @param grid Spielfeld, dass übergeben wird
  183.      */
  184.     public static void print(char[][] grid) {
  185.         System.out.println("  0123456789");    //Angabe der Spalten    
  186.         System.out.println("  __________");    //Dient nur zur Deko
  187.         for (int i = 0; i < 10; i++) {           //Für jede Zeile
  188.             System.out.print(i + "|");         //Angabe der Zeilen, "|" Dient nur zur Abgrenzung
  189.             for (int j = 0; j < 10; j++) {       //Für jede Spalte
  190.                 System.out.print(grid[i][j]);  //Ausgabe des Chars; i=Zeile j=Spalte
  191.             }
  192.             System.out.print("\n");            //Zeilenumbruch am Ende der Zeile
  193.         }
  194.     }
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement