我目前正在使用PyGame模块与Python进行游戏。我有两个班,一个游戏班和一个汽车班。游戏类有一个游戏循环方法,我通过不同的方法循环,一个是汽车类中的事件方法。当我运行程序时,一切都很好。但是,当我尝试移动对象时,键盘输入处理速度很慢,当我向移动键发送垃圾邮件时,某些输入根本无法被识别。
我是如何构建游戏循环的根本原因?
游戏循环方法如下:
def game_loop(self):
running = True
self.test_car = car()
while running:
pygame.display.set_caption("Project G")
self.event_handler()
self.screen.blit(self.background, (0,0))
self.test_car.event_handler()
self.test_car.update()
pygame.display.flip()
这是汽车类:
class car(game):
def __init__(self):
super(car, self).__init__()
self.init_x_pos = 100
self.init_y_pos = 100
self.x_speed = 0
self.y_speed = 0
self.load_img = load()
self.car_img = pygame.image.load(self.load_img.car_img)
def event_handler(self):
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_DOWN:
self.y_speed += 1
print "DOWN"
elif event.key == K_UP:
self.y_speed -= 1
print "UP"
elif event.key == K_RIGHT:
self.x_speed += 1
print "RIGHT"
elif event.key == K_LEFT:
self.x_speed -= 1
print "LEFT"
def update(self):
self.screen.blit(self.car_img, (self.init_x_pos + self.x_speed, self.init_y_pos + self.y_speed))
答案 0 :(得分:1)
你应该只有一个循环调用pygame.event.get()
;根据按键时代码执行的部分,事件可以路由到其中一个。如果一个丢弃某些事件而另一个没有丢弃,那么每当第一个事件获得事件时,它将被忽略,而当第二个获得事件时,它将被正常处理。