1.1 --- a/minesweeper/src/main/java/org/apidesign/demo/minesweeper/Main.java Sun Mar 09 15:03:01 2014 +0100
1.2 +++ b/minesweeper/src/main/java/org/apidesign/demo/minesweeper/Main.java Sun Mar 09 15:21:42 2014 +0100
1.3 @@ -68,11 +68,14 @@
1.4
1.5 /** Launches the browser */
1.6 public static void main(String... args) throws Exception {
1.7 + /*
1.8 Logger l = Logger.getLogger("org.apidesign.html.dlvkbrwsr");
1.9 l.setLevel(Level.ALL);
1.10 + l.setUseParentHandlers(false);
1.11 ConsoleHandler ch = new ConsoleHandler();
1.12 ch.setLevel(Level.ALL);
1.13 l.addHandler(ch);
1.14 + */
1.15
1.16
1.17 BrowserBuilder.newBrowser(new XtrnlBrwsrPrsntr() {
2.1 --- a/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java Sun Mar 09 15:03:01 2014 +0100
2.2 +++ b/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java Sun Mar 09 15:21:42 2014 +0100
2.3 @@ -245,6 +245,7 @@
2.4 } else {
2.5 TOUCH.play();
2.6 expandKnown(model, data);
2.7 + model.computeMines();
2.8 }
2.9 break;
2.10 }
2.11 @@ -272,9 +273,18 @@
2.12 }
2.13 final Square sq = columns.get(x);
2.14 if (sq.getState() == SquareType.UNKNOWN) {
2.15 - sq.setState(SquareType.N_0);
2.16 - model.computeMines();
2.17 - if (sq.getState() == SquareType.N_0) {
2.18 + int around =
2.19 + minesAt(model, x - 1, y - 1) +
2.20 + minesAt(model, x - 1, y) +
2.21 + minesAt(model, x - 1, y + 1) +
2.22 + minesAt(model, x , y - 1) +
2.23 + minesAt(model, x, y + 1) +
2.24 + minesAt(model, x + 1, y - 1) +
2.25 + minesAt(model, x + 1, y) +
2.26 + minesAt(model, x + 1, y + 1);
2.27 + final SquareType t = SquareType.valueOf("N_" + around);
2.28 + sq.setState(t);
2.29 + if (t == SquareType.N_0) {
2.30 expandKnown(model, x - 1, y - 1);
2.31 expandKnown(model, x - 1, y);
2.32 expandKnown(model, x - 1, y + 1);
2.33 @@ -286,4 +296,17 @@
2.34 }
2.35 }
2.36 }
2.37 +
2.38 + private static int minesAt(Mines model, int x, int y) {
2.39 + if (y < 0 || y >= model.getRows().size()) {
2.40 + return 0;
2.41 + }
2.42 + final List<Square> columns = model.getRows().get(y).getColumns();
2.43 + if (x < 0 || x >= columns.size()) {
2.44 + return 0;
2.45 + }
2.46 + Square sq = columns.get(x);
2.47 + return sq.isMine() ? 1 : 0;
2.48 + }
2.49 +
2.50 }