41 return rook_isblocked(gamestate, move); |
41 return rook_isblocked(gamestate, move); |
42 } else { |
42 } else { |
43 return bishop_isblocked(gamestate, move); |
43 return bishop_isblocked(gamestate, move); |
44 } |
44 } |
45 } |
45 } |
46 |
|
47 int queen_getlocation(GameState *gamestate, Move *move) { |
|
48 |
|
49 Move moveasrook = *move; |
|
50 int rookaspect = rook_getlocation(gamestate, &moveasrook); |
|
51 |
|
52 Move moveasbishop = *move; |
|
53 int bishopaspect = bishop_getlocation(gamestate, &moveasbishop); |
|
54 |
|
55 if (rookaspect == VALID_MOVE_SYNTAX && bishopaspect == VALID_MOVE_SYNTAX) { |
|
56 return AMBIGUOUS_MOVE; |
|
57 } |
|
58 |
|
59 if (rookaspect == VALID_MOVE_SYNTAX) { |
|
60 *move = moveasrook; |
|
61 return VALID_MOVE_SYNTAX; |
|
62 } |
|
63 |
|
64 if (bishopaspect == VALID_MOVE_SYNTAX) { |
|
65 *move = moveasbishop; |
|
66 return VALID_MOVE_SYNTAX; |
|
67 } |
|
68 |
|
69 return INVALID_POSITION; |
|
70 } |
|