# HG changeset patch # User Jaroslav Tulach # Date 1380075527 -7200 # Node ID bc0094a5f88c43d74ce09adb1563c514c52c773e # Parent 6bb4070d2c20ffbdb33c1797143ec5cbca635680 Can now play game against ownself diff -r 6bb4070d2c20 -r bc0094a5f88c chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java --- a/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java Tue Sep 24 23:52:32 2013 +0200 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java Wed Sep 25 04:18:47 2013 +0200 @@ -64,18 +64,6 @@ } } - @ComputedProperty static boolean myTurn(String player, String whitePlayer, String blackPlayer, Color turn) { - if (turn != null && player != null) switch (turn) { - case B: return player.equals(blackPlayer); - case W: return player.equals(whitePlayer); - } - return false; - } - - @ComputedProperty static boolean justObserving(String player) { - return player == null; - } - private static final AudioClip MOVE = AudioClip.create("sounds/move.mp3"); @OnPropertyChange("moves") static void playMove() { MOVE.play(); @@ -85,11 +73,6 @@ private static final AudioClip CHECKMATE = AudioClip.create("sounds/checkmate.mp3"); @Function static void selected(Board b, Square data) { - if (!b.isMyTurn()) { - b.setAlertMessage("Not your turn!"); - return; - } - Square previoslySelected = findSelectedSquare(b); if (previoslySelected == null) { if (data.getPiece() != null && data.getPieceColor() == b.getTurn()) { @@ -121,12 +104,11 @@ b.getMoves().add(newMove); b.setPendingMove(newMove); - data.setPending(true); data.setPieceColor(previoslySelected.getPieceColor()); data.setPiece(previoslySelected.getPiece()); - b.setTurn(null); previoslySelected.setPiece(null); previoslySelected.setPieceColor(null); + b.setTurn(b.getTurn() == Color.W ? Color.B : Color.W); Rules.computeAccessible(b, null); } } @@ -235,22 +217,6 @@ return null; } - static void moveResponse( - final Board b, final String errMsg, - final List whites, final List blacks, - final Color turn, Object alert - ) { - if (errMsg != null) { - b.getMoves().remove(b.getPendingMove()); - b.setPendingMove(null); - b.setAlertMessage(errMsg); - } else { - b.setTurn(turn); - b.setAlertMessage(null); - } - Rules.initBoard(b, whites, blacks, turn); - } - static void moveUpdate( final Board b, final Move move, final List whites, final List blacks, @@ -330,7 +296,6 @@ @Property(name = "pieceColor", type = Color.class), @Property(name = "selected", type = boolean.class), @Property(name = "accessible", type = boolean.class), - @Property(name = "pending", type = boolean.class), }) static class SquareModel { @ComputedProperty static String pieceEntity( @@ -343,7 +308,7 @@ } @ComputedProperty static String squareColor( - Color color, boolean selected, boolean accessible, boolean pending + Color color, boolean selected, boolean accessible ) { if (selected) { return "selected"; @@ -351,9 +316,6 @@ if (accessible) { return "accessible"; } - if (pending) { - return "pending"; - } if (color == null) { return ""; diff -r 6bb4070d2c20 -r bc0094a5f88c chess/src/main/java/org/apidesign/html/demo/chess/Rules.java --- a/chess/src/main/java/org/apidesign/html/demo/chess/Rules.java Tue Sep 24 23:52:32 2013 +0200 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/Rules.java Wed Sep 25 04:18:47 2013 +0200 @@ -176,7 +176,7 @@ new Position(j, i), (i + j) % 2 == 1 ? Color.W : Color.B, null, null, // figure - false, false, false + false, false ); } addRows.add(new Row(arr)); @@ -197,7 +197,6 @@ for (char j = 'A'; j <= 'H'; j++) { Square s = r.getColumns().get(j - 'A'); s.setAccessible(false); - s.setPending(false); r.getColumns().set(j - 'A', s); initialPosition(s, init); } @@ -206,7 +205,6 @@ for (Row r : b.getRows()) { for (Square square : r.getColumns()) { square.setAccessible(false); - square.setPending(false); square.setPiece(null); square.setPieceColor(null); square.setSelected(false); diff -r 6bb4070d2c20 -r bc0094a5f88c chess/src/main/webapp/pages/index.html --- a/chess/src/main/webapp/pages/index.html Tue Sep 24 23:52:32 2013 +0200 +++ b/chess/src/main/webapp/pages/index.html Wed Sep 25 04:18:47 2013 +0200 @@ -50,8 +50,6 @@ JavaOne Chess diff -r 6bb4070d2c20 -r bc0094a5f88c chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java --- a/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java Tue Sep 24 23:52:32 2013 +0200 +++ b/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java Wed Sep 25 04:18:47 2013 +0200 @@ -67,15 +67,6 @@ BoardModel.selected(b, e4); - assertTrue(e4.isPending(), "e4 marked as pending move"); - assertNull(e2.getPiece(), "No pawn at e2"); - - // ignore all other figures than the two pawns - BoardModel.moveResponse(b, null, Collections.singletonList("Pe4"), - Collections.singletonList("Pe7"), Color.B, null - ); - - assertFalse(e4.isPending(), "e4 now the move is real"); assertNull(e2.getPiece(), "No pawn at e2"); assertEquals(e4.getPiece(), BoardModel.PieceType.PAWN, "Pawn moved successfully"); assertNull(BoardModel.findSelectedSquare(b), "No square selected"); @@ -95,8 +86,6 @@ Square e7 = BoardModel.findSquare(b, 'E', 7); - BoardModel.selected(b, e7); - assertNull(BoardModel.findSelectedSquare(b), "Can't select anything when I am white player"); Move blackMv = BoardModel.MoveImpl.valueOf("E7E6"); BoardModel.moveUpdate(b, blackMv, @@ -153,23 +142,10 @@ BoardModel.selected(b, e4); - assertTrue(e4.isPending(), "e4 marked as pending move"); assertNull(e2.getPiece(), "No pawn at e2"); assertEquals(b.getMoves().size(), 1, "One move recorded"); assertEquals(b.getMoves().get(0), b.getPendingMove(), "Pending move is waiting"); - - // ignore all other figures than the two pawns - BoardModel.moveResponse(b, "No way, can't play like this", Collections.singletonList("PE2"), - Collections.singletonList("Pe7"), Color.W, null - ); - - assertEquals(b.getAlertMessage(), "No way, can't play like this"); - assertNull(e4.getPiece(), "No piece on e4"); - assertEquals(e2.getPiece(), PieceType.PAWN, "Pawn is back"); - - assertEquals(b.getMoves().size(), 0, "Move was discarded"); - assertNull(b.getPendingMove(), "No pending moves"); } @Test public void cantSelectEmptySquare() { @@ -235,21 +211,11 @@ BoardModel.selected(b, e2); BoardModel.selected(b, e4); - // ignore all other figures than the two pawns - BoardModel.moveResponse(b, null, Collections.singletonList("PE4"), - Collections.singletonList("PD7"), Color.B, null - ); - setPlayer(b, Color.B); BoardModel.selected(b, d7); BoardModel.selected(b, d5); - // ignore all other figures than the two pawns - BoardModel.moveResponse(b, null, Collections.singletonList("PE4"), - Collections.singletonList("PD5"), Color.W, null - ); - setPlayer(b, Color.W); BoardModel.selected(b, e4); @@ -272,31 +238,16 @@ BoardModel.selected(b, e2); BoardModel.selected(b, e4); - // ignore all other figures than the three pawns - BoardModel.moveResponse(b, null, Collections.singletonList("PE4"), - Arrays.asList("PD7", "PE7"), Color.B, null - ); - setPlayer(b, Color.B); BoardModel.selected(b, d7); BoardModel.selected(b, d5); - // ignore all other figures than the three pawns - BoardModel.moveResponse(b, null, Collections.singletonList("PE4"), - Arrays.asList("PD5", "PE7"), Color.W, null - ); - setPlayer(b, Color.W); BoardModel.selected(b, e4); BoardModel.selected(b, e5); - // ignore all other figures than the three pawns - BoardModel.moveResponse(b, null, Collections.singletonList("PE5"), - Arrays.asList("PD5", "PE7"), Color.B, null - ); - setPlayer(b, Color.B); BoardModel.selected(b, e7); @@ -315,11 +266,6 @@ BoardModel.selected(b, e2); BoardModel.selected(b, e4); - // ignore all other figures than the two pawns - BoardModel.moveResponse(b, null, Collections.singletonList("Pe4"), - Collections.singletonList("PD7"), Color.B, null - ); - Move blackMv = BoardModel.MoveImpl.valueOf("D7D5"); BoardModel.moveUpdate(b, blackMv, Collections.singletonList("PE4"),