2018-02-13 13:38:49 +00:00
|
|
|
from board import Board
|
2018-03-14 13:02:19 +00:00
|
|
|
|
2018-02-05 22:50:31 +00:00
|
|
|
class Bot:
|
2018-05-13 21:54:13 +00:00
|
|
|
def __init__(self, sym):
|
2018-02-05 22:50:31 +00:00
|
|
|
self.sym = sym
|
2018-03-08 12:32:40 +00:00
|
|
|
|
2018-03-04 16:35:36 +00:00
|
|
|
def get_session(self):
|
|
|
|
return self.session
|
|
|
|
|
2018-02-06 22:29:51 +00:00
|
|
|
def get_sym(self):
|
|
|
|
return self.sym
|
2018-02-05 22:50:31 +00:00
|
|
|
|
2018-05-13 21:54:13 +00:00
|
|
|
|
|
|
|
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)
|
|
|
|
|
2018-02-05 22:50:31 +00:00
|
|
|
|