[解決済み] pygame.key.get_pressed() が動作しない。
質問
Stack Overflowでこれと似たような質問を読みましたが、役に立ちませんでした。以下は私のコードです。
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Hello World')
pygame.mouse.set_visible(1)
done = False
clock = pygame.time.Clock()
while not done:
clock.tick(60)
keyState = pygame.key.get_pressed()
if keyState[pygame.K_ESCAPE]:
print('\nGame Shuting Down!')
done = True
プレス加工
escape
を実行しても、ゲームが終了せず、メッセージも表示されません。これはバグなのでしょうか?keyState[pygame.K_ESCAPE]の値を出力すると、常に0になってしまいます。
解決方法を教えてください。
問題は、pygameのイベントキューを処理しないことです。単純に
pygame.event.pump()
をループの最後に追加すると、コードは正常に動作します。
...
while not done:
clock.tick(60)
keyState = pygame.key.get_pressed()
if keyState[pygame.K_ESCAPE]:
print('\nGame Shuting Down!')
done = True
pygame.event.pump() # process event queue
から ドキュメント (強調)。
pygame.event.pump()
pygame のイベントハンドラを内部で処理する
pump() -> None
ゲームの各フレームで、イベントキューに何らかの呼び出しを行う必要があります。これにより、あなたのプログラムは内部的にオペレーティングシステムの残りの部分と相互作用することができます。 ゲーム内で他のイベント関数を使用していない場合は、pygame.event.pump()を呼び出して、pygameが内部アクションを処理できるようにする必要があります。
あなたのプログラムが他の pygame.event 関数を通してキュー上のイベントを一貫して処理している場合、この関数は必要ありません。
イベントキューには、内部で処理しなければならない重要なことがあります。メインウィンドウの再描画やシステムへの応答が必要な場合があります。 イベント・キューの呼び出しに長時間失敗すると、システムがプログラムがロックされたと判断することがある .
を呼び出すだけなら、この作業は必要ないことに注意してください。
pygame.event.get()
そうでない場合は、メインループの任意の場所で
pygame.event.clear()
イベントキューが一杯にならないようにするためです。
関連
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
-
[解決済み] 空ではないフォルダーを削除/消去するにはどうすればよいですか?
-
[解決済み] 作業ディレクトリを変更するシェル 'cd' コマンドに相当するものですか?
-
[解決済み】「datetime.datetime not JSON serializable」を克服する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
python string splicing.join()とsplitting.split()の説明
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない