Как я могу обойти ошибку рекурсии в этой шахматной программе - PullRequest
0 голосов
/ 04 октября 2019

Я пишу шахматную программу. 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()
...