我有一个Paddle
类,它有一个move
读取一些键盘输入的方法:
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
带有 aBall
和Paddle
classes 的文件),没有生成.pyc文件,并且在 Paddle 的更新方法中检查的事件得到了正确处理。我尝试删除所有.pyc文件并添加
sys.dont_write_bytecode = True
以防止它们自动生成,但这也没有帮助。尽管.pyc文件不再显示,但程序的行为仍然与以前相同。想法:可能是我用同名的pygame或内置模块来隐藏一个模块吗?还是反过来?到目前为止,我在项目文件夹中有以下模块:
constants.py
frame.py
game.py
helper.py
level.py
menu.py
music.py
objects.py
stats.py
text.py
vec2d.py