Python练习游戏,在while循环之间切换时遇到问题

时间:2019-05-01 23:19:27

标签: python python-3.7

我希望这些21-34行上的while循环交替出现(一个结束,下一个开始),但是一个简单地停止,下一个不运行。

def update(self):
    mv_p = False
    while not mv_p:
        self.rect.x -= 5
        if self.rect.left > width - 750:
            mv_p = True
            return mv_p
            break

    while mv_p:
        self.rect.y += 5
        if self.rect.right < width - 750:
            mv_p = False
            return mv_p
            break

2 个答案:

答案 0 :(得分:0)

在循环内部调用return将中断函数/方法执行,并将值返回给调用方。

因此,一旦第一个循环返回mv_p,您的方法调用就结束了。

答案 1 :(得分:0)

如果希望它们交替出现(第一循环,第二循环,第一循环,第二循环等),则应将它们嵌套在另一个循环中。

def update(self):
    mv_p = False
    while True:
        while not mv_p:
            self.rect.x -= 5
            if self.rect.left > width - 750:
                mv_p = True
                break

        while mv_p:
            self.rect.y += 5
            if self.rect.right < width - 750:
                mv_p = False
                break

        #need to draw on the screen here or nothing will be shown
        #add condition to exit the function, adding for example a return
        #inside af if, otherwise this will be an infinite loop.

如果相反,您只想要第一个循环,第二个循环并退出而无需嵌套它们,只需从函数中删除return调用即可。