Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package minesweeper;
- // Spiel soll mit den Variablen/Konstanten aus Minen arbeiten können
- public class Spiel extends Minen {
- public Anzeige anzeige;
- int versteckteFelder = Anzeige.BREITE * Anzeige.HOEHE;
- private char spielZustand = AKTIVESSPIEL;
- public static final char AKTIVESSPIEL = 'A';
- public static final char GEWONNEN = 'W';
- public static final char VERLOREN = 'L';
- public Spiel() {
- anzeige = new Anzeige();
- }
- public char getZustand() {
- return spielZustand;
- }
- // Schaut, ob auf dem Platz im Minenarray eine Mine vorhanden ist
- // und fügt sie ggf. in der Spielfeldanzeige ein
- //
- // Ist keine Mine vorhanden, so werden die Nachbarminen gezählt
- public void suche(int x, int y) {
- if (spielZustand == AKTIVESSPIEL) {
- // System.out.println(versteckeFelder);
- // Wenn Mine angeklickt wird, dann werden alle aufgedeckt & das Spiel ist
- // verloren
- if (istHierMine(x, y)) {
- minenAufdecken();
- spielZustand = VERLOREN;
- } else {
- zaehleNachbarn(x, y);
- versteckteFelder--;
- }
- if (versteckteFelder == Minen.ANZAHLMINEN) {
- minenAufdecken();
- spielZustand = GEWONNEN;
- // System.out.println("gew");
- }
- }
- System.out.println(versteckteFelder);
- }
- private void minenAufdecken() {
- for (int i = 0; i < Minen.ANZAHLMINEN; i++) {
- Mine mine = get(i);
- anzeige.mineSetzten(mine.getX(), mine.getY());
- }
- }
- private void zaehleNachbarn(int posX, int posY) {
- char zaehler = '0';
- for (int x = posX - 1; x <= posX + 1; x++) {
- for (int y = posY - 1; y <= posY + 1; y++) {
- if (istHierMine(x, y))
- zaehler += 1;
- }
- }
- anzeige.spielfeld[posX][posY] = zaehler;
- if (zaehler == '0') {
- for (int x = posX - 1; x <= posX + 1; x++) {
- for (int y = posY - 1; y <= posY + 1; y++) {
- if (x < Anzeige.BREITE && y < Anzeige.HOEHE) {
- if (x >= 0 && y >= 0) {
- if (anzeige.spielfeld[x][y] == Anzeige.LEER) {
- zaehleNachbarn(x, y);
- versteckteFelder--;
- }
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement