問題タブ [pygame-clock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - ゲームのメインループのpygame clock.tick()とフレームレート
すべての pygame には、次のようなゲーム ループがあります。
のAPIによるとget_ticks()
:
pygame.init() が呼び出されてからのミリ秒数を返します。pygame が初期化される前は、これは常に 0 です。
しかしclock.tick()
:
このメソッドは、フレームごとに 1 回呼び出す必要があります。の数を計算します。前回の呼び出しからミリ秒が経過しました。
オプションのフレームレート引数を渡すと、関数は遅延して、指定されたティック/秒よりも遅くゲームを実行し続けます。これは、ゲームの実行速度を制限するために使用できます。フレームごとに 1 回 Clock.tick(40) を呼び出すことにより、プログラムは 1 秒あたり 40 フレームを超えて実行されることはありません。
少し混乱していますが、それclock.tick()
はゲームの開始から経過したミリ秒数に直接影響するということですか?
つまりclock.tick(40)
、1 秒あたり 40 フレームを「発行」し、while ループが 1 秒あたり 40 回実行されるということですか?
fps と ticks の関係がわかりません。
更新: 実際にテストしたところ、orget_ticks()
にどのような fps を指定しても、mls 単位で REAL 時間が返されます。tick() - 0.1
30
60
したがって、ゲームの実行速度またはwhile loop が自分自身を更新する頻度をclock.tick()
設定するだけのようです。
しかし、私はまだ少し混乱しています。他の回答は大歓迎です。
python - Pygame - 3 秒間のイベントを 1 回だけ実行する
私は PyGame の初心者で、スペース シューティング ゲームを作成しています。このゲームの一部はパワーアップであり、プレイヤーが特定のパワーアップを拾ったときに、プレイヤーが 3 秒間射撃できないようにしたいと考えています。撮影はマウスクリックで行います。
パワーアップを拾うことができます。プレイヤーが最後に拾ったパワーアップはわかっていますが、イベントに苦労しています。私が実装を考えている方法は次のとおりです。
- Can't Shoot パワーアップを拾う -> 完了
- マウス ボタンをブロックする
- ゲームの残りの部分がまだ実行されている間、3 秒間待ちます
- マウス ボタンのブロックを解除します。
待機などの Python 関数が役に立たないことは承知しています。
アイデア/提案はありますか?ありがとう
python - Pygame でのキーボード入力からの読み取りのレイテンシ
特定のイベントが画面に表示されてから、ユーザーが pygame の入力キーで応答するまでの時間を測定しようとしています。できるだけ正確に計測したいと思います。
pygameで予想される/最悪の場合のレイテンシは何ですか? そして、キーボードからより速く読み取るための代替手段は何ですか?
以下は、キーボードから読み取って時間を測定するために現在使用しているコードです。
python - pygameのステータスバー内にデジタル時計を作成する方法(tkinterなし)?
現在、私は学校で Pygame でゲームを作成する課題を行っています。を決定する時計を作成するプロセスに行き詰まっています。日、時、分。
これまでにいくつかのコードを作成しましたが、実行するたびに Pygame がクラッシュします。これはおそらく少し面倒ですが、助けていただければ幸いです。
これは私のコードです:
python - ピクルスパイゲームクロック
shelve
現在、を使用するモジュールを使用して作成した小さな RPG に保存機能を実装することを検討していますpickle
。
pygame サーフェスをピクルできないことがわかった後、オブジェクト属性として代わりに辞書キーを渡すことを提案するアドバイスに従いました。ゲームの修正に何時間も費やし、すべてのサーフェスを体系的にチェックし、実際にスタート メニューを起動して実行すると、pygame クロック オブジェクトもシリアル化できないという新しいメッセージ エラーが表示されました。残念なことに、サーフェスとは異なり、必要なすべてのクロック (攻撃タイマー、アニメーション タイマー、AI タイマーなど) をすべて特定のオブジェクトに固有に使用するため、必要なすべてのクロックを事前に作成することはできません。つまり、すべてのスプライトに 1 つのアタック タイマーを設定する代わりに、それぞれに 1 つのアタック タイマーを設定して、柔軟性を高めています。さらに、クロックの数は作成するオブジェクトの数に依存し、この数はある程度ランダムです。私は本当にできる」
だから、私が実際に持っている質問を要約すると:
shelve
1)タイマーを pygameするにはどうすればよいですか?
2) それが不可能な場合、どの代替手段をお勧めしますか?
3) この保存機能の実装にこれ以上時間を費やす前に、シリアル化できない他の pygame オブジェクト、またはこの情報をどこで見つけることができますか?
私は多くの質問をすることを知っていますが、タイマーで同じ問題を抱えているためだけにそれらのサーフェスをソートするのに多くの時間を費やし、次に何が起こるのか疑問に思っていることに非常に不満を感じています...それはすべて学習の一部だと思いますが;)
python - pygame ウィンドウでクリッククロックを設定する方法
画面内を動く時計をデザインしています。しかし、私のコードでできることは、不変の時間を表示することです。クリックして時間を数えたい。 私の不変時計の絵
そして、時計をもっと美しくしたいのですが、方法がわかりません。誰かが何か提案をしてくれれば、とても感謝しています。
python - pygame:ゲームを実際に60fpsで実行するにはどうすればよいですか?
私のメインループには次のものがあります:
ただし、読み取り値によると、ゲームは 62.5 fps で読み取っています。次に を入力しようとしたところclock.tick_busy_loop(57.5)
、58.82...fps が表示されました。設定するclock.tick_busy_loop(59)
と、再び62.5fpsになります。58.8fps と 62.5fps の間に、ここでは乗り越えられないしきい値があるようです。ゲームを実際に 60fps で実行するにはどうすればよいですか? 音楽のタイミングに依存するイベントを実行するので、主にこの種のコントロールを探しています。
python - pygame.time.delay() を使用すると、Pygame に入力ラグがあります。
私のプログラムの目標は、画像をループして画面に表示することです。ユーザーがスペースを押すと、新しい画面に移動するはずです。なんらかの理由で、ユーザーがスペースを押してから、game1 ループから抜け出すまでにタイムラグがあります。
これを修正するにはどうすればよいですか?
python - 終了ボタンを押すと Python プログラムがクラッシュします。それ以外の場合は正常に動作します。Pygame モジュールを使用しています。コードは以下に添付されています
ファイルからデータを読み取っています。基本的に、これらは反復ごとにボールを表示したい座標です。終了ボタンを押すとすぐに出力ウィンドウ「試行 1」がクラッシュするという事実を除いて、コードは正常に動作しています。この問題は、追加する前はありませんでしたfor t in range (np.size(T)):
。しかし、私はそれを必要とします。問題を解決するために、コードの可能な変更をいくつか提案してください。