diff -r 8e31706fc5da -r 9cf895cde4bd minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java --- a/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java Fri Feb 07 15:40:56 2014 +0100 +++ b/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java Fri Feb 07 16:35:45 2014 +0100 @@ -117,6 +117,7 @@ List xBombs = new ArrayList(); List yBombs = new ArrayList(); final List rows = model.getRows(); + boolean emptyHidden = false; for (int y = 0; y < rows.size(); y++) { final List columns = rows.get(y).getColumns(); for (int x = 0; x < columns.size(); x++) { @@ -127,6 +128,10 @@ } if (sq.getState().isVisible()) { sq.setState(SquareType.N_0); + } else { + if (!sq.isMine()) { + emptyHidden = true; + } } } } @@ -136,6 +141,10 @@ incrementAround(model, x, y); } + + if (!emptyHidden) { + model.setState(GameState.WON); + } } private static void incrementAround(Mines model, int x, int y) {