Minesweeper

Diskutiere Minesweeper im Codeschnipsel u. Projekte Forum; Hallo zusammen, 2012 habe ich mein erstes Java Projekt gestartet: Einen Minesweeper Klon. Meine Java-Fähigkeiten sind seitdem immer mehr...

  1. Oliver530
    Oliver530 Neues Mitglied
    Hallo zusammen,

    2012 habe ich mein erstes Java Projekt gestartet: Einen Minesweeper Klon.
    Meine Java-Fähigkeiten sind seitdem immer mehr eingerostet (wirklich gut waren sie wahrscheinlich noch nie... ;)). Jetzt hat mich aber das Java-Fieber doch wieder gepackt und ich sitze an der Neuauflage meines Pilotprojekts. Das Projekt findet Ihr unter: https://github.com/Oliver530/Minesweeper

    Das Grundgerüst (Spiellogik und rudimentäre Konsolenausgabe) ist schon fertig. Als nächstes steht eine grafische Benutzeroberfläche an. Die Schnittstelle zur Logik ist schon vorhanden.

    Mir fehlt nun leider eine Einschätzung von ein paar "alten Hasen"... :)
    Was gefällt euch gut?
    Was würdet ihr anders machen?
    Welche Entwurfsmuster können noch verwendet werden, um den Code flexibler zu machen?
    Was sind Don'ts in Java?

    Bei der Entwicklung meiner ersten Version habe ich hier im Forum viel Input erhalten und interessante Diskussionen mit den Mitgliedern geführt. Deshalb bin ich nun wieder hier im Java-Forum und freue mich über eure Meinung und Tipps.

    Über Verbesserungsvorschläge und sonstiges Feedback würde ich mich also sehr freuen. :)

    Viele Grüße und ein schönes Wochenende
    Oli
     

    Anhänge:

  2. Vielleicht hilft dir dieser Java-Kurs hier weiter --> (hier klicken)
  3. CSHW89
    CSHW89 Aktives Mitglied
    Etwas spät, aber mal meine Einschätzung, nachdem ich mal bisschen rübergeflogen bin: ein wirklich schön sauberer Code. Es gibt Kleinigkeiten, die ich anders machen würde (aber nur meine eigene Meinung!)

    - Board.getNeighbourCells:
    Für sowas schreib ich mir immer ein Enum 'Direction':
    Code (Java):
    public enum Direction {
        NORTH_WEST(-1,-1),
        NORTH(0,-1),
        NORTH_EAST(1,-1),
        ...;
       
        public int x;
        public int y;
        public Direction(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }
    Und dann in der Methode:
    Code (Java):
    private List<Cell> getNeighbourCells(final int row, final int col) {
        List<Cell> neighbours = new ArrayList<>();
        for(Direction d : Direction.values()) {
            if (inRange(row+d.y, col+d.x)) {
                neighbours.add(cells[row+d.y][col+d.x]);
            }
        }
    }

    - Die Klasse BoardBuilder gefällt mir ehrlich gesagt, nicht so sehr. Ich würde denken, sie gibt eine Instanz der Klasse Board zurück. Da könnte man auch das Pattern "Fluent Interface" benutzen:
    Code (Java):
    BoardBuilder builder = new BoardBuilder();
    Board board = builder.row(row).column(col).mine(mine).build();
    Die Methoden 'row', 'column' und 'mine' geben wieder die BoardBuilder-Instanz zurück, und 'build' erstellt über den Konstruktor von 'Board' das Feld. Der Konstruktor von 'Board' könnte dann package protected sein.


    - Nochmal zurück zu Board:
    Da ich ein Fan von Streams bin, seh ich dort Potenzial dafür (natürlich nur nicetohave). So könnte die Methode 'getNeighbourCells' noch kompakter geschrieben werden:
    Code (Java):
    private Stream<Cell> getNeighbourCells(final int row, final int col) {
        return Arrays.stream(Direction.values())
            .filter(d -> inRange(row+d.y, col+d.x))
            .map(d -> cell[row+d.y][col+d.x]);
    }
    Die Methode 'getNeighbourMineCount' würde dann so aussehen:
    Code (Java):
    public int getNeighbourMineCount(Cell cell) {
        return getNeighbourCells(cell).filter(Cell::isMineInside).count();
    }
    Grüße
    Kevin
     
    Zuletzt bearbeitet: 5. Sep. 2017
Die Seite wird geladen...

Minesweeper - Ähnliche Themen

Java Minesweeper - OS X und Win7 Unterschied
Java Minesweeper - OS X und Win7 Unterschied im Forum Spiele- und Multimedia-Programmierung
Minesweeper - keine Bilder
Minesweeper - keine Bilder im Forum Spiele- und Multimedia-Programmierung
Minesweeper-Problem
Minesweeper-Problem im Forum Java Basics - Anfänger-Themen
Minesweeper
Minesweeper im Forum Spiele- und Multimedia-Programmierung
Minesweeper Hilfe
Minesweeper Hilfe im Forum Java Basics - Anfänger-Themen
Thema: Minesweeper