由于一些奇怪的原因(我对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()
答案 0 :(得分:3)
在两个while game
和while game2
循环之上需要另一个循环:
while True:
while game:
#
while game2:
#
现在game2
结束时,最外面的while
循环会返回到第一个while game
循环。
结束游戏需要你突破while True
循环;您可以使用break
关键字,在while game
或while game2
循环之外执行。
答案 1 :(得分:1)
while
循环不会经常检查它们的条件是True
。
正如您所说,在game
循环之前执行game2
while循环。
while game:
# do stuff
while game2:
# do stuff
当game2
将game
设置为True时,这并不意味着while game
循环将再次开始执行。 while
循环的主体及其递归仅执行一次。 Python将继续执行脚本的其余部分并终止。在没有任何其他控制流的情况下,while game
循环无法再次执行。
另一种选择是将game
和game2
转换为函数,并在其游戏应该启动时在其他函数中调用它们。
如果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