Python 一次按多个键以使角色沿对角线移动
我遇到的问题是,当用户按下K_向上键和K_向右键或K_向上键和K_向下键等时,我试图使我的角色在屏幕上沿对角线移动。以下是我的角色移动代码(事件处理): 您可以通过以下方式进行:Python 一次按多个键以使角色沿对角线移动,python,events,pygame,keyboard-events,Python,Events,Pygame,Keyboard Events,我遇到的问题是,当用户按下K_向上键和K_向右键或K_向上键和K_向下键等时,我试图使我的角色在屏幕上沿对角线移动。以下是我的角色移动代码(事件处理): 您可以通过以下方式进行: 只是一个建议:ifs的长链可能更好地表示为一个映射:event_dict={K_ESCAPE:sys.exit,K_UP:lambda:setattr(self,'char_y',self.char_y-10)等,然后是event_dict[event.key]()我还建议一些面向对象的阅读,这在游戏开发中至关重要。我
只是一个建议:
if
s的长链可能更好地表示为一个映射:event_dict={K_ESCAPE:sys.exit,K_UP:lambda:setattr(self,'char_y',self.char_y-10)
等,然后是event_dict[event.key]()
我还建议一些面向对象的阅读,这在游戏开发中至关重要。我担心这个游戏在旧CPU上运行会慢一些。这个代码应该放在原始代码下还是应该替换它?@coolbartek:大多数游戏在旧CPU上运行会慢一些吗?具体来说,你是什么意思?阅读我的答案,你想让角色以20px/秒的速度移动,而这里你以10px/周期的速度移动,其中周期速度取决于CPU速度。游戏将在较慢的机器上运行较慢,但角色将以相同的速度移动。(更新更少,但移动更多像素/周期)现在更清楚了吗?没关系。非常感谢你,黑胡子!我让它工作了D
1. #Event Handling
2. for event in pygame.event.get():
3. if event.type == pygame.QUIT:
4. sys.exit()
5. elif (event.type == KEYDOWN):
6. if ((event.key == K_ESCAPE)
7. or (event.key == K_q)):
8. sys.exit()
9. if (event.key == K_UP):
10. self.char_y = self.char_y - 10
11. if (event.key == K_DOWN):
12. self.char_y = self.char_y + 10
13. if (event.key == K_RIGHT):
14. self.char_x = self.char_x + 10
15. if (event.key == K_LEFT):
16. self.char_x = self.char_x - 10
keys = pygame.key.get_pressed()
if keys[K_LEFT]:
self.char_x += 10
if keys[K_RIGHT]:
self.char_x -= 10
if keys[K_UP]:
self.char_y -= 10
if keys[K_DOWN]:
self.char_y += 10