[英]Why does my pygame window freeze and crash?
每当我尝试运行我的程序时,它都会冻结并崩溃。 我不是 pygame 编码大师,但我几乎可以肯定这与我的主循环有关。 它应该允许用户使用箭头键左右移动。 我尝试添加时钟并更改屏幕大小,但没有奏效。 这是代码:
import pygame
import sys
import random
import time
pygame.init()
screen = pygame.display.set_mode((500,500))
events = pygame.event.get()
clock = pygame.time.Clock()
x = 50
y = 50
game_over = False
while not game_over:
for event in events:
if event.type != pygame.QUIT:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
x += 5
elif event.key == pygame.K_LEFT:
x -= 5
else:
sys.exit()
screen.fill((0,0,0))
pygame.draw.rect(screen, (255,255,255), (x,y,50,50))
clock.tick(30)
pygame.display.update()
代码需要连续处理事件队列,否则你的运行环境会认为你的 window 无响应(锁定)。 您的代码几乎就在那里,除了它只获取一次新事件,但这需要在主循环的每次迭代中完成。
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((500,500))
clock = pygame.time.Clock()
x = 50
y = 50
game_over = False
while not game_over:
events = pygame.event.get() # <<-- HERE handle every time
for event in events:
if event.type != pygame.QUIT:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
x += 5
elif event.key == pygame.K_LEFT:
x -= 5
else:
sys.exit()
screen.fill((0,0,0))
pygame.draw.rect(screen, (255,255,255), (x,y,50,50))
clock.tick(30)
pygame.display.update()
你不能foe event in events
,当你调用pygame.events.get()
时,你正在更新它们,你更新它们一次并在每一帧循环它们,你需要for event in pygame.event.get():
所以您每帧调用 function 并每帧更新事件
除非你试图这样做?
events = pygame.event.get
...
for event in events():
与上述相同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.