我怎样才能绕过这个象棋程序中的递归错误呢

2024-10-04 11:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个象棋程序。自我人在piece类中,只适用于黑色,而不适用于白色。我假设它使用的是init值,因为我可以将它切换为白色并解决问题。在movecalc中,它不断地被定义,所以我认为它是从那里来的。我试着把self.pieces=Pieces()放在init中,但它给了我一个错误“RecursionError:调用Python对象时超过了最大递归深度”是的,我知道这个错误来自于将self.game=Game()放在piece类中,而将self.piece=Piece()放在game类中,会使pieces成为game的子类吗?你知道吗


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()

Tags: selfgamepieceinitdefpersonblackplayer