View Javadoc

1   package net.sourceforge.simplegamenet.chess;
2   
3   public class ChessPawn extends ChessPiece {
4   
5       public ChessPawn(int participantOwnerIndex, int x, int y) {
6           super(participantOwnerIndex, x, y);
7       }
8   
9       public boolean isMoveAllowed(ChessPiece[] pieceGrid,
10                                   int destinationX, int destinationY) {
11          if (pieceGrid[destinationX * GRID_HEIGHT + destinationY] != null
12                  && pieceGrid[destinationX * GRID_HEIGHT + destinationY]
13                  .getParticipantsOwnerIndex() == participantOwnerIndex) {
14              return false;
15          } else if (pieceGrid[destinationX * GRID_HEIGHT + destinationY] != null
16                  && Math.abs(x - destinationX) == 1
17                  && y - destinationY == (participantOwnerIndex == 0 ? 1 : -1)) {
18              return true;
19          } else if (pieceGrid[destinationX * GRID_HEIGHT + destinationY] == null
20                  && x == destinationX) {
21              if (y - destinationY == (participantOwnerIndex == 0 ? 1 : -1)) {
22                  return true;
23              } else if (Math.abs(y - destinationY) == 2
24                      && y == (participantOwnerIndex == 0 ? GRID_HEIGHT - 2 : 1)
25                      && pieceGrid[destinationX * GRID_HEIGHT
26                      + Math.min(y, destinationY) + 1] == null) {
27                  return true;
28              } else {
29                  return false;
30              }
31          } else {
32              return false;
33          }
34      }
35  
36      public int getPieceType() {
37          return ChessPieceType.PAWN;
38      }
39  
40      public int getPieceValue() {
41          return 1;
42      }
43  
44      public boolean isReplaceChoiceNeeded(int destinationX, int destinationY) {
45          return y == (participantOwnerIndex == 0 ? 1 : GRID_HEIGHT - 2);
46      }
47  
48  }