Programmierung KW47

Aus Lerngruppe Informatik
Wechseln zu: Navigation, Suche

Labyrinth.java

/**

* Ein Labyrinth Spiel, bei eine Spielfigur durch ein Labyrinth bewegt
* wird, bis alle Schaetze entdeckt gefunden wurden.
*/

public class Labyrinth {

   private int breite = 19;
   private int hoehe = 19;
   private int schaetze = 5;
   private int spielerZeile = 0;
   private int spielerSpalte = 1;
   private LabyrinthFeld[][] spielfeld;

//////////// // SETTER // //////////// /**Ändert die Breite des Labyrinths auf breite *@param breite neue Breite des Labyrinths (2 Zeichen pro LE) */ public void setBreite(int breite) { this.breite = breite; }

/**Ändert die Höhe des Labyrinths auf hoehe *@param hoehe neue Höhe des Labyrinths (2 Zeichen pro LE) */ public void setHoehe(int hoehe) { this.hoehe = hoehe; }

/**Ändert die Anzahl der Schätze im Labyrinths auf anzahlSchaetze *@param anzahlSchaetze Anzahl der im Labyrinth versteckten Schaetze */ public void setAnzahlSchaetze(int anzahlSchaetze) { this.schaetze = anzahlSchaetze; }

//////////// // GETTER // ////////////

/**Gibt die Breite des Labyrinths zurück *@return Breite des Labyrinths (2 Zeichen pro LE) */ public int getBreite() { return this.breite; }

/**Gibt die Höhe des Labyrinths zurück *@return Höhe des Labyrinths (2 Zeichen pro LE) */ public int getHoehe() { return this.hoehe; }

/**Gibt die Anzahl der Schätze im Labyrinths zurück *@return Anzahl der Schätze im Labyrinth */ public int getAnzahlSchaetze() { return this.schaetze; }

/** Intialisiert das Spielfeld mit der vorgegebenen Breite, Höhe und Anzahl der versteckten Schätze */

   public void labyrinthErstellen()

{ this.spielfeld = LabyrinthGenerator.generateLabyrinth(this.getBreite(), this.getHoehe(), this.getAnzahlSchaetze()); }


   public static void main(String[] args) {
       Labyrinth l = new Labyrinth();
       System.out.print("Breite des Labyrinths: ");
       l.setBreite(
           Integer.parseInt(System.console().readLine()));
       System.out.print("Hoehe des Labyrinths: ");
       l.setHoehe(
           Integer.parseInt(System.console().readLine()));
       System.out.print("Zahl der Schaetze: ");
       l.setAnzahlSchaetze(
           Integer.parseInt(System.console().readLine()));
       l.labyrinthErstellen();
       l.spielen();
   }

/** Wandelt das Objekt der Klasse in einen String */ public String toString() { String labyrinth = new String("");

for(int y=0; y<this.spielfeld.length; y++) { for(int x=0; x<this.spielfeld[y].length; x++) { if(!(y == this.spielerZeile && x == this.spielerSpalte)) { switch(this.spielfeld[y][x]) { case LabyrinthFeld.Mauer: labyrinth = labyrinth + "##"; break;

case LabyrinthFeld.Frei: labyrinth = labyrinth + " "; break;

case LabyrinthFeld.Schatz: labyrinth = labyrinth + "GG"; break; } } else { labyrinth = labyrinth + "<>"; } } labyrinth = labyrinth + "\n"; } return labyrinth;

   }
   private void geheNach(Richtung richtung) {
       switch(richtung)

{ case Norden: if(this.spielerZeile-1>=0 && (this.spielfeld[this.spielerZeile-1][this.spielerSpalte] != LabyrinthFeld.Mauer)) this.spielerZeile--; break;

case Osten: if(this.spielerSpalte+1<=this.getBreite() && (this.spielfeld[this.spielerZeile][this.spielerSpalte+1] != LabyrinthFeld.Mauer)) this.spielerSpalte++; break;

case Sueden: if(this.spielerZeile+1<=this.getHoehe() && (this.spielfeld[this.spielerZeile+1][this.spielerSpalte] != LabyrinthFeld.Mauer)) this.spielerZeile++; break;

case Westen: if(this.spielerSpalte-1>=0 && (this.spielfeld[this.spielerZeile][this.spielerSpalte-1] != LabyrinthFeld.Mauer)) this.spielerSpalte--; break; } if(this.spielfeld[this.spielerZeile][this.spielerSpalte] == LabyrinthFeld.Schatz) { this.spielfeld[this.spielerZeile][this.spielerSpalte] = LabyrinthFeld.Frei; this.schaetze--; }

   }
   

/** Kontrolliert den Spielablauf */

   public void spielen() {
       System.out.println(this.toString());

System.out.println("Buchstaben und danach Enter druecken. w/a/s/d = Norden/Westen/Sueden/Osten, q = Beenden"); System.out.print(">"); char input = System.console().readLine().charAt(0); switch(input) { case 'w': geheNach(Richtung.Norden); break;

case 'a': geheNach(Richtung.Westen); break;

case 's': geheNach(Richtung.Sueden); break;

case 'd': geheNach(Richtung.Osten); break;

case 'q': System.exit(0); break; } if(this.getAnzahlSchaetze() == 0) { System.out.println("Herzlichen Glueckwunsch! Du hast alle Schaetze gefunden!"); System.exit(0); } this.spielen();

   }

}

Richtung.java

public enum Richtung { /** * Norden ist die Richtung in die sich die Spielfigur bewegt, wenn der Spieler die Taste 'w' drückt. */ Norden, /** * Osten ist die Richtung in die sich die Spielfigur bewegt, wenn der Spieler die Taste 'd' drückt. */ Osten, /** * Sueden ist die Richtung in die sich die Spielfigur bewegt, wenn der Spieler die Taste 's' drückt. */ Sueden, /** * Westen ist die Richtung in die sich die Spielfigur bewegt, wenn der Spieler die Taste 'a' drückt. */ Westen; }

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge