1.1 --- a/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java Sun Mar 09 15:21:42 2014 +0100
1.2 +++ b/minesweeper/src/main/java/org/apidesign/demo/minesweeper/MinesModel.java Thu Mar 27 15:14:48 2014 +0100
1.3 @@ -39,7 +39,7 @@
1.4 @Property(name = "state", type = MinesModel.GameState.class),
1.5 @Property(name = "rows", type = Row.class, array = true),
1.6 })
1.7 -final class MinesModel {
1.8 +public final class MinesModel {
1.9 enum GameState {
1.10 IN_PROGRESS, WON, LOST;
1.11 }
1.12 @@ -231,7 +231,7 @@
1.13 }
1.14 }
1.15
1.16 - private static final AudioClip TOUCH = AudioClip.create("move.mp3");
1.17 + private static AudioClip TOUCH;
1.18 @Function static void click(Mines model, Square data) {
1.19 if (model.getState() != GameState.IN_PROGRESS) {
1.20 return;
1.21 @@ -243,6 +243,9 @@
1.22 showAllBombs(model, SquareType.EXPLOSION);
1.23 model.setState(GameState.LOST);
1.24 } else {
1.25 + if (TOUCH == null) {
1.26 + TOUCH = AudioClip.create("move.mp3");
1.27 + }
1.28 TOUCH.play();
1.29 expandKnown(model, data);
1.30 model.computeMines();
1.31 @@ -308,5 +311,12 @@
1.32 Square sq = columns.get(x);
1.33 return sq.isMine() ? 1 : 0;
1.34 }
1.35 -
1.36 +
1.37 + /**
1.38 + * Called when page is ready
1.39 + */
1.40 + public static void main(String... args) throws Exception {
1.41 + Mines m = new Mines();
1.42 + m.applyBindings();
1.43 + }
1.44 }