【发布时间】:2016-12-14 12:29:43
【问题描述】:
我正在使用 pygame 库创建一个非常简单的游戏,其中玩家使用箭头键在屏幕上移动一个正方形。不幸的是,控件的响应被证明是一个问题。
在您切换方向之前,控件工作正常,例如左到右。当玩家切换方向时,玩家控制罐子的方格会停止。
我的游戏中的控件代码如下所示:
def move(self, event):
speed = 6
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
self.rect.x -= speed
if event.key == pygame.K_RIGHT:
self.rect.x += speed
if event.key == pygame.K_DOWN:
self.rect.y += speed
if event.key == pygame.K_UP:
self.rect.y -= speed
此方法位于一个名为 Block 的类中(我从 pygame 文档中窃取了 Block),它只是为玩家制作一个精灵并提供运动。
函数 move() 实际上是在 main.py 文件中这样调用的:
while going:
clock.tick(60)
# event handling
for event in pygame.event.get():
if event.type == QUIT:
going = False
# controller input
player.move(event)
其中 player 是 Block 类的一个实例,而 event 只是我的游戏事件队列中的一个项目。
我尝试使用 pygame.key.get_pressed 函数(效果更好),但我宁愿使用 pygame.KEYDOWN 本地变量,因为它会将按键作为事件队列中的事件返回,而不是从列表返回布尔值。
如果您比一般的 joe 更具调查性,可以在此处查看“完整”游戏:https://github.com/catmes/Project_React
您将需要 pygame 1.9.2 和 python 2.7。请记住,游戏本身更像是一种学习练习,所以当你看到糟糕的代码时不要感到惊讶(当然,稍后会修复;))。
感谢您过来看看这个问题,非常感谢您抽出宝贵的时间。
【问题讨论】:
标签: python-2.7 pygame