Python 如何让屏幕等待用户输入
在创建我的游戏时,我遇到了这个bug,我认为我在测试游戏时已经摆脱了它,但是当我一直试图修复它时,它使代码无法工作。救命啊Python 如何让屏幕等待用户输入,python,pygame,Python,Pygame,在创建我的游戏时,我遇到了这个bug,我认为我在测试游戏时已经摆脱了它,但是当我一直试图修复它时,它使代码无法工作。救命啊 if stage2 == 1: screen.fill(black) pygame.display.flip() time.sleep(1) screen.fill(blue) pygame.display.flip() time.sleep(0.25) screen.fill(black) pygame.di
if stage2 == 1:
screen.fill(black)
pygame.display.flip()
time.sleep(1)
screen.fill(blue)
pygame.display.flip()
time.sleep(0.25)
screen.fill(black)
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
run_me = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
screen.fill(red)
stage2 = stage2 + 1
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
screen.fill(white)
stage2 = stage2 + 1
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
screen.fill(blue)
stage3 = stage3 + 1
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
screen.fill(green)
stage2 = stage2 + 1
顺便说一句,颜色和其他所有东西的代码都在代码的前面,但是我们可以说您可以看到它
当我运行此代码时,屏幕一直闪烁蓝色,救命 我不知道您想做什么,但我会使用
while
循环检查键,直到您更改运行我
或阶段2
if stage2 == 1:
screen.fill(black)
pygame.display.flip()
time.sleep(1)
screen.fill(blue)
pygame.display.flip()
time.sleep(0.25)
screen.fill(black)
pygame.display.flip()
while run_me and stage2 == 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run_me = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
screen.fill(red)
stage2 = stage2 + 1
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
screen.fill(white)
stage2 = stage2 + 1
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
screen.fill(blue)
stage3 = stage3 + 1
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
screen.fill(green)
stage2 = stage2 + 1
它可能不适用于其余的代码,但您没有显示其余的代码
当您使用sleep()
时,它不会检查键,因此您可能需要重新考虑代码并使用不同的东西。即
def wait(time)
quit = False
key = None
current_time = pygame.time.get_ticks()
end_time = current_time + time*1000
while end_time > current_time and not key and not quit:
clock.ticks(25)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit = True
elif event.type == pygame.KEYDOWN:
key = event.key
current_time = pygame.time.get_ticks()
return quit, key
if stage2 == 1:
screen.fill(black)
pygame.display.flip()
quit, key = wait(1)
if quit:
run_me = False
# - or -
#run_me = not quit
screen.fill(blue)
pygame.display.flip()
quit, key = wait(0.25)
if quit:
run_me = False
# - or -
#run_me = not quit
screen.fill(black)
pygame.display.flip()
当然,它可能仍然不能像您预期的那样与其余代码一起工作。请查看并提供一个。使用
while True
循环检查事件。并使用pygame.time
而不是sleep
来控制对象参见示例