src/chess/queen.c

changeset 47
d726e4b46c33
parent 24
4d030da07c88
child 55
54ea19938d57
equal deleted inserted replaced
46:4dcfb4c58b6d 47:d726e4b46c33
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 }

mercurial