Alexander Munch-Hansen
926a331df0
again and it is possible to play against the ai. There is no flag for this yet, so this has to be added.
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
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)
|
|
|
|
|