Я пишу шахматную программу. self.person в классе фигуры работает только для черных, но не для белых. Я предполагаю, что это использует значение инициализации, поскольку я могу переключить его на белый и решить проблему. В movecalc он постоянно определяется, поэтому я думаю, что он идет оттуда. Я попытался поместить self.pieces=Pieces()
в init, но он выдал ошибку «RecursionError: максимальная глубина рекурсии превышена при вызове объекта Python». Да, я знаю, что эта ошибка возникает из-за наличия self.game=Game()
в классе фигур и self.piece=Piece()
в классе игрыбудет делать куски подклассом игровой работы?
class Pieces():
def __init__(self, empassant=(-5,-5)):
super().__init__()
self.empassant=empassant
self.game=Game()
self.white=White()
self.black=Black()
class Game ():
def __init__(self):
super().__init__()
self.white=White()
self.black=Black()
self.turn="WHITE"
self.pieces=Pieces()
self.player=self.white
self.opponent=self.black
self.person=self.white
def move(self):
if self.turn=="BLACK":
self.player=self.black
self.opponent=self.white
else:
self.player=self.white
self.opponent=self.black
self.person=self.opponent
self.movecalc()#calculates opponents moves
self.person=self.player#calculates players moves
self.movecalc()
def movecalc(self):
# it was initially: pieces=Pieces()