def allDestructionTurns(clr, check_name, board_state, available_destructions, destruction_way, final): for destruct in available_destructions: turn_with_destruct = { "name": [clr[0], check_name], "startPos": board_state['board'][clr[0]][check_name]['position'], "finalPos": { "x": destruct["fin_position"]["x"], "y": destruct["fin_position"]["y"] }, "cutDown": [search_check_by_position(board_state["board"], clr[1], destruct['enemy_position'])] } destruction_way_new = deepcopy(destruction_way) destruction_way_new.append(turn_with_destruct) board_state_new = deepcopy(board_state) board_state_new["board"][clr[0]][check_name]["position"] = destruct["fin_position"] board_state_new["board"][clr[1]][search_check_by_position(board_state_new["board"], clr[1], destruct["enemy_position"])]["status"] = "dead" if ((clr[0]=="black" and destruct["fin_position"]["y"]==8) or (clr[0]=="white" and destruct["fin_position"]["y"]==1)): board_state_new["board"][clr[0]][check_name]["promoted"] = 1 available_destructions = destruction_is_possible(board_state_new["board"][clr[0]][check_name]["position"], filled_cells(board_state_new, color=clr[1]), filled_cells(board_state_new, color=clr[0]), board_state_new["board"][clr[0]][check_name]["promoted"]) if available_destructions: allDestructionTurns(clr, check_name, board_state_new, available_destructions, destruction_way_new, final) else: final.append(destruction_way_new) return final
def makeMove(mv, board_state, clr): board_state_new = deepcopy(board_state) # print 'MV ', mv if type(mv)==dict: if ((clr[0]=='black' and mv["finalPos"]["y"]==8) or (clr[0]=='white' and mv["finalPos"]["y"]==1)): board_state_new["board"][clr[0]][search_check_by_position(board_state["board"],clr[0],mv['startPos'])]["promoted"] = 1 board_state_new["board"][clr[0]][search_check_by_position(board_state["board"],clr[0],mv['startPos'])]["position"]=mv["finalPos"] else: for destr_move in mv: board_state_new["board"][clr[1]][destr_move["cutDown"][0]]["status"]="dead" board_state_new["board"][clr[0]][search_check_by_position(board_state["board"],clr[0],mv[0]['startPos'])]["position"]=mv[-1]["finalPos"] return board_state_new
def allBoardMoves(board_state, clr): possible_moves_dst = [] possible_moves_no_dst = [] for check in filled_cells(board_state, color=clr[0]): move = allMoves(board_state, clr, search_check_by_position(board_state["board"], clr[0], check)) for p_mv in move[1]: if move[0]==0: possible_moves_no_dst.append(p_mv) else: possible_moves_dst.append(p_mv) if possible_moves_dst: return possible_moves_dst else: return possible_moves_no_dst