繁体   English   中英

为什么在循环中继时不这样做?

[英]Why isn't this while loop reitterating?

由于一些奇怪的原因(我是python / pygame的新手),这个while循环不会加载另一个。 我有两个球员。 它从一个循环的播放器中开始,然后在一个循环播放器完成后将第二个循环变为true,依此类推。 但是,一旦第二个循环完成,它就不会将第一个循环变为true,只会使程序结束。

循环一:

game = True
while game:
    for event in pygame.event.get():
        pygame.event.get()

        if event.type == pygame.KEYDOWN and event.key == pygame.K_a:
            count1 = pygame.draw.circle(window, (255, 255, 255),(200, countY - 100), 25, 0)
            game = False
            game2 = True
            print("Test")
            pygame.display.update()

循环二(按下“ J”时,这将使第一个循环为真):

while game2:
    for event in pygame.event.get():
        pygame.event.get()

        if event.type == pygame.KEYDOWN and event.key == pygame.K_j:
            count3 = pygame.draw.circle(window, (255, 255, 255),(500, countY - 100), 25, 0)
            game2 = False
            game = True
            print("Test third")
            pygame.display.update()

您需要在两个while gamewhile game2循环之上的另一个循环:

while True:
    while game:
        #

    while game2:
        #

现在当game2结束时,最外面的while循环返回到第一个while game循环。

结束游戏需要您退出while True循环; 您可以为此使用break关键字,该关键字可以在while gamewhile game2循环之外执行。

Python中的while循环不会经常检查其条件是否为True

game while循环执行,正如你所说,在之前game2循环。

while game:
    # do stuff

while game2:
    # do stuff

game2game设置为True时,这并不意味着while game循环将再次开始执行。 while循环的主体及其递归仅执行一次。 Python将继续执行脚本的其余部分并终止。 没有任何其他控制流程,就无法再次执行while game循环。

另一种选择是将gamegame2转换为函数,并在应该开始游戏时在其他函数中调用它们。

如果执行game2应该结束,一旦game开始,然后像这样就足够了:

def game():
    while True:
        for event in pygame.event.get():
            pygame.event.get()
            if event.type == pygame.KEYDOWN and event.key == pygame.K_a:
                count1 = pygame.draw.circle(window, (255, 255, 255),(200, countY - 100), 25, 0)
                game2() # Begin player 2 game
                print("Test")
                pygame.display.update()
                return # Stop execution of game()

def game2():
    while True:
        for event in pygame.event.get():
            pygame.event.get()
            if event.type == pygame.KEYDOWN and event.key == pygame.K_j:
                count3 = pygame.draw.circle(window, (255, 255, 255),(500, countY - 100), 25, 0)
                game() # Begin player 1 game
                print("Test third")
                pygame.display.update()
                return

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM