# HG changeset patch # User Jaroslav Tulach # Date 1374852110 -7200 # Node ID 7ae0125d57b2de7eec9beb9b0a291f24dcf21ce9 # Parent 1ebd52ae8ccbbd6af6ef1d09eda1827b8589c3ca Pawns can take opponents diff -r 1ebd52ae8ccb -r 7ae0125d57b2 chess/src/main/java/org/apidesign/html/demo/chess/Rules.java --- a/chess/src/main/java/org/apidesign/html/demo/chess/Rules.java Fri Jul 26 17:14:25 2013 +0200 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/Rules.java Fri Jul 26 17:21:50 2013 +0200 @@ -126,5 +126,14 @@ } } } + BoardModel.ColorType opposite = white ? BoardModel.ColorType.BLACK : BoardModel.ColorType.WHITE; + Square takeLeft = BoardModel.findSquare(b, (char)(s.getX() - 1), s.getY() + dy); + if (takeLeft != null && takeLeft.getPieceColor() == opposite) { + takeLeft.setAccessible(true); + } + Square takeRight = BoardModel.findSquare(b, (char)(s.getX() + 1), s.getY() + dy); + if (takeRight != null && takeRight.getPieceColor() == opposite) { + takeRight.setAccessible(true); + } } } diff -r 1ebd52ae8ccb -r 7ae0125d57b2 chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java --- a/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java Fri Jul 26 17:14:25 2013 +0200 +++ b/chess/src/test/java/org/apidesign/html/demo/chess/BoardModelTest.java Fri Jul 26 17:21:50 2013 +0200 @@ -120,4 +120,23 @@ assertEquals(f3.getPiece(), PieceType.KNIGHT, "Moved"); assertFalse(g3.isSelected(), "No longer selected"); } + + @Test public void pawnCanTakeToSide() { + Board b = BoardModel.createBoard(); + Square e2 = BoardModel.findSquare(b, 'E', 2); + Square e4 = BoardModel.findSquare(b, 'E', 4); + Square d7 = BoardModel.findSquare(b, 'D', 7); + Square d5 = BoardModel.findSquare(b, 'D', 5); + + BoardModel.selected(b, e2); + BoardModel.selected(b, e4); + BoardModel.selected(b, d7); + BoardModel.selected(b, d5); + + BoardModel.selected(b, e4); + assertTrue(d5.isAccessible(), "Can take on d5"); + BoardModel.selected(b, d5); + assertNull(e4.getPiece(), "No pawn on e4"); + assertEquals(d5.getPieceColor(), ColorType.WHITE, "White Pawn on d5"); + } }