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

问题描述 投票:0回答:2

我希望这些while循环在第21-34行交替(一个结束,下一个开始),但一个只是停止而下一个不运行。

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
python python-3.7
2个回答
0
投票

在循环内部调用return将破坏函数/方法执行并将值返回给调用者。

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


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调用。

© www.soinside.com 2019 - 2024. All rights reserved.