1 package net.sourceforge.simplegamenet.chess;
2
3 public class ChessQueen extends ChessPiece {
4
5 public ChessQueen(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 {
16 if (x == destinationX) {
17 for (int i = 1; i < Math.abs(y - destinationY); i++) {
18 if (pieceGrid[x * GRID_HEIGHT
19 + (y + (y < destinationY ? i : -i))] != null) {
20 return false;
21 }
22 }
23 return true;
24 } else if (y == destinationY) {
25 for (int i = 1; i < Math.abs(x - destinationX); i++) {
26 if (pieceGrid[(x + (x < destinationX ? i : -i)) * GRID_HEIGHT
27 + y] != null) {
28 return false;
29 }
30 }
31 return true;
32 } else if (Math.abs(x - destinationX) == Math.abs(y - destinationY)) {
33 for (int i = 1; i < Math.abs(x - destinationX); i++) {
34 if (pieceGrid[(x + (x < destinationX ? i : -i)) * GRID_HEIGHT
35 + (y + (y < destinationY ? i : -i))] != null) {
36 return false;
37 }
38 }
39 return true;
40 } else {
41 return false;
42 }
43 }
44 }
45
46 public int getPieceType() {
47 return ChessPieceType.QUEEN;
48 }
49
50 public int getPieceValue() {
51 return 7;
52 }
53
54 }