キーボード入力を読み取るメソッドを持つ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
を含むファイルもあります) では、 .pycファイルは生成されず、Paddle の update メソッドでチェックされたイベントは正しく処理されます。Ball
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