为什么这个while循环重新输入?

时间:2014-01-20 20:30:04

标签: python pygame

由于一些奇怪的原因(我对python / pygame不熟悉)这个while循环没有加载另一个。我有它,所以有两个球员。它在一个while循环中的播放器1开始,然后一旦播放器一完成,它将第二个while循环转为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()

循环2(当按下“J”时,这应该将第一个循环变为true):

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

2 个答案:

答案 0 :(得分:3)

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

while True:
    while game:
        #

    while game2:
        #

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

结束游戏需要你突破while True循环;您可以使用break关键字,在while gamewhile game2循环之外执行。

答案 1 :(得分:1)

Python中的

while循环不会经常检查它们的条件是True

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

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