Если вы не хотите использовать какой-либо объект, вы можете использовать setattr()
внутри вашего текущего модуля:
import sys
current_module = module = sys.modules[__name__] # i.e the "file" where your code is written
setattr(current_module, 'variable_name', 15) # 15 is the value you assign to the var
print(variable_name) # >>> 15, created from a string
Вы не поделились реализацией MovePiece
и основным игровым циклом, но я обнаружил две возможные проблемы внутри метода MiniMax.execute
:
currentValue = tempBoard.getTurnIsWhite() ? min(tempBoard, depth -1) : max(tempBoard, depth -1)
Согласно приведенному выше коду, вы предполагаете, что игрок MinMax всегда будет черным, поскольку он оценивает min
для белых и max
для черных. Для общего алгоритма это неверное предположение, хотя не знаю, работает ли он для вас.
Во-вторых, после вызова mp.execute()
и присвоения bestMove = mp
, который вы называете mp.unexecute()
, так эффективно вызывайте bestMove.unexecute()
, поскольку переменные указывают на один и тот же объект.
Пожалуйста, рассмотрите предложения выше, и если это не решит проблему, поделитесь вышеупомянутыми частями реализации.