Пример #1
0
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    
Пример #2
0
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
Пример #3
0
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