Python Pygame不读取输入
我有一个Python Pygame不读取输入,python,pygame,Python,Pygame,我有一个拨片类,有一个移动方法,可以读取一些键盘输入: def move(self, dt): keys = pygame.key.get_pressed() if keys[K_LEFT]: return -self.speed * dt elif keys[K_RIGHT]: return self.speed * dt return 0 同一个类在另一个程序中使用,并且在那里工作良好。我完全不知道为什么会这样。真正奇怪的是,当程序从Eclipse或IDL
拨片
类,有一个移动
方法,可以读取一些键盘输入:
def move(self, dt):
keys = pygame.key.get_pressed()
if keys[K_LEFT]: return -self.speed * dt
elif keys[K_RIGHT]: return self.speed * dt
return 0
同一个类在另一个程序中使用,并且在那里工作良好。我完全不知道为什么会这样。真正奇怪的是,当程序从Eclipse或IDLE运行时,会检测到按键,但当直接从文件运行时,什么都不会发生。另外,我最近添加了一些代码,使球在移动之前等待一段时间,在Eclipse中也是如此,但在直接从.py文件运行时不会
def update(self, dt):
if self.on_paddle:
self.rect.centerx = self.paddle.rect.centerx
self.time_passed += dt
if self.time_passed > 3:
self.on_paddle = False
else:
self.rect = self.calcnewpos(dt)
self.handle_collision()
为什么会这样?为什么它在从eclipse运行而不是从文件运行时工作?这是主要的东西
更新
game.py
文件是主文件(运行的文件),它会自动为所有导入的模块创建.pyc文件。但是在另一个游戏中(也有一个objects.py
文件,其中包含Ball
和patle
类),没有生成.pyc文件,并且在那里的patle更新方法中检查的事件得到了正确处理constants.py
frame.py
game.py
helper.py
level.py
menu.py
music.py
objects.py
stats.py
text.py
vec2d.py
事实证明,这个解决方案相当令人尴尬。在游戏的主循环中,我正在计算
dt
(自上次以来经过的时间)如下:
dt = clock.tick(FPS) / 1000
所以它被截断为0,因为clock.tick返回的值是一个浮点数,而且由于球拍和球需要
dt
,所以它们不会移动。我仍然不明白为什么在我的另一个游戏中,dt=clock.tick(FPS)/1000运行得很好。你说的“直接从文件运行”是什么意思?只是运行.py文件。你在该.py文件中执行的代码中调用了pygame.init
,在外部作用域的主函数中。我将通过缩小范围来开始调试它。如果您改用pygame.event.get
,按键/释放事件是否通过这里?另外,其他程序中有哪些启动和初始化代码是您的程序中没有的?@DominicKexel也不明白这一点。