Вы можете отделить логику от team == -1
от логики, которая происходит, когда team != -1
:
def ai_player(self, state, team = 1):
new_shape_x = np.asarray(state[1]).shape
player1 = Minimax(n = new_shape_x, default_team = team)
if team == -1:
state = player1.convert_board_state(state)
best_move = player1.decision_maker(state)
chosen_succ, utility = best_move
chosen_succ = player1.convert_board_state(chosen_succ)
else:
best_move = player1.decision_maker(state)
chosen_succ, utility = best_move
return chosen_succ
Хотя будет повторение кода.
В этом случаеВы также можете превратить две повторяющиеся строки в одну, давая понять, что эта часть кода является повторяющейся частью:
def ai_player(self, state, team = 1):
new_shape_x = np.asarray(state[1]).shape
player1 = Minimax(n = new_shape_x, default_team = team)
if team == -1:
state = player1.convert_board_state(state)
chosen_succ, utility = player1.decision_maker(state)
chosen_succ = player1.convert_board_state(chosen_succ)
else:
chosen_succ, utility = player1.decision_maker(state)
return chosen_succ
Теперь переменная best_move
исчезла.Если вы все еще хотите сказать, что выбираете лучший ход, вы можете переименовать метод decision_maker
в что-то вроде choose_best_move
:
def ai_player(self, state, team = 1):
new_shape_x = np.asarray(state[1]).shape
player1 = Minimax(n = new_shape_x, default_team = team)
if team == -1:
state = player1.convert_board_state(state)
chosen_succ, utility = player1.choose_best_move(state)
chosen_succ = player1.convert_board_state(chosen_succ)
else:
chosen_succ, utility = player1.choose_best_move(state)
return chosen_succ
И вот оно!