move->y2 = 0;
move->is_capture = 0;
- matched = sscanf (string, "%c%d%c%c%d", &xc1, &y1, &sep, &xc2, &y2);
- if (matched != 5)
+ matched = sscanf (string, " %c%d%c%c%d", &xc1, &y1, &sep, &xc2, &y2);
+ if (matched != 5) {
+ printf ("Matched only %d fields of %s\n", matched, string);
return FALSE;
+ }
x1 = tolower (xc1) - 'a';
x2 = tolower (xc2) - 'a';
int
loa_board_move (loa_board_t *board,
- int x1, int y1,
- int x2, int y2,
+ loa_move_t *move,
char **error)
{
loa_cell_t cell;
- loa_move_t move;
-
- move.x1 = x1;
- move.y1 = y1;
- move.x2 = x2;
- move.y2 = y2;
- if (! loa_board_move_legal (board, &move, error))
+ if (! loa_board_move_legal (board, move, error))
return FALSE;
- cell = loa_board_remove_piece (board, x1, y1);
+ cell = loa_board_remove_piece (board, move->x1, move->y1);
assert (cell == board->player);
- cell = loa_board_remove_piece (board, x2, y2);
+ cell = loa_board_remove_piece (board, move->x2, move->y2);
if (cell == LOA_CELL_EMPTY) {
- move.is_capture = FALSE;
+ move->is_capture = FALSE;
} else {
assert (cell != board->player);
- move.is_capture = TRUE;
+ move->is_capture = TRUE;
}
- loa_board_add_piece (board, x2, y2, board->player);
+ loa_board_add_piece (board,
+ move->x2, move->y2,
+ board->player);
- loa_board_add_move_to_history (board, &move);
+ loa_board_add_move_to_history (board, move);
loa_board_next_player (board);