2Contains functions used to convert algebraic board notation into
3integer indices array notation.
7from xiangqi_bindings
import BoardSpace, Move
12 first_step = player_input.strip().split(
',')
13 return [item.strip()
for item
in first_step]
17 return len(parsed_input) == 2
and all([
18 re.fullmatch(
'^[a-i](?:10|[1-9])$', item)
for item
in parsed_input
23 alg_column = algebraic_space[0]
24 file = ord(alg_column) - ord(
'a')
25 alg_row = algebraic_space[1:]
26 rank = 10 - int(alg_row)
28 return BoardSpace(rank=rank, file=file)
32 alg_column = chr(board_space.file + ord(
'a'))
33 alg_row = str(10 - board_space.rank)
34 return f
"{alg_column}{alg_row}"
38 board_space_from_to = [
40 return Move(start=board_space_from_to[0], end=board_space_from_to[1])
46 return f
"{from_str}, {to_str}"
Move convert_parsed_input_to_move(List[str] parsed_input)
str convert_move_to_input_str(Move move)
bool is_valid_algebraic_pair(List[str] parsed_input)
BoardSpace algebraic_space_to_boardspace(str algebraic_space)
List[str] parse_input(str player_input)
str boardspace_to_algebraic_space(BoardSpace board_space)