我有一個Paddle
類與move
方法,上面寫着一些鍵盤輸入: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或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運行,但不是從文件運行? Here是主要的東西。
UPDATE
我意識到,我的
game.py
文件,該文件是主文件(即運行一個),會自動創建.pyc文件文件全部導入模塊。但是在另一個遊戲(其中objects.py
文件的Ball
和Paddle
類)中,沒有生成.pyc文件,並且在Paddle的更新方法中檢查的事件被正確處理。我嘗試刪除所有.pyc文件文件,並添加
sys.dont_write_bytecode = True
,以防止它們被自動生成的,但也沒有幫助。雖然.pyc文件不再顯示該程序是stil行爲與以前一樣。想法:是不是我用一個pygame或內置的同名模塊遮蔽模塊?或者相反呢?到現在爲止我已經在項目文件夾以下模塊:
constants.py
frame.py
game.py
helper.py
level.py
menu.py
music.py
objects.py
stats.py
text.py
vec2d.py
你是什麼意思「直接從文件中運行?」 – kevintodisco
只需運行.py文件。 – Jovito
您是否在該.py文件中執行的代碼中調用了'pygame.init'? – kevintodisco