from board import Board class Bot: def __init__(self, sym): self.sym = sym def get_session(self): return self.session def get_sym(self): return self.sym def calc_move_sets(self, from_board, roll, player): board = from_board sets = [] total = 0 print("board!:",board) for r in roll: # print("Value of r:",r) sets.append([Board.calculate_legal_states(board, player, [r,0]), r]) total += r sets.append([Board.calculate_legal_states(board, player, [total,0]), total]) return sets def handle_move(self, from_board, to_board, roll, player): # print("Cur board:",board) sets = self.calc_move_sets(from_board, roll, player) for idx, board_set in enumerate(sets): board_set[0] = list(board_set[0]) # print("My board_set:",board_set) if to_board in [list(c) for c in board_set[0]]: self.total_moves -= board_set[1] if idx < 2: # print("Roll object:",self.roll) self.roll[idx] = 0 else: self.roll = [0,0] break print("Total moves left:",self.total_moves) def tmp_name(self, from_board, to_board, roll, player, total_moves): sets = self.calc_move_sets(from_board, roll, player) return_board = from_board for idx, board_set in enumerate(sets): board_set = list(board_set[0]) if to_board in [list(board) for board in board_set]: total_moves -= board_set[1] # if it's not the sum of the moves if idx < 2: roll[idx] = 0 else: roll = [0,0] return_board = to_board break return total_moves, roll, return_board def make_human_move(self, board, player, roll): total_moves = roll[0] + roll[1] previous_board = board while total_moves != 0: move = input("Pick a move!\n") to_board = Board.apply_moves_to_board(previous_board, player, move) total_moves, roll, board = self.tmp_name(board, to_board, roll, player, total_moves)