問題タブ [pygame]
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 とスレッド: グローバルにアクセスするときにロックされますか?
私はpygameを使ってゲームをプログラミングしています。リアルタイム通信用の udp ベースのプロトコルである OpenSoundControl (OSC) を使用して、キャラクターの 1 つを制御するつもりです。基本的に、simpleOSCモジュールを使用して、いくつかの OSC コマンドを pygame プログラムの関数にバインドしています。
私のゲーム構造は次のようなものです(これは単純化されているため、アイデアが得られます):
Game は、pygame.init() を実行し、pygame に関連するほとんどすべての描画と処理を行う単純なクラスです。
コードを実行するときに発生する問題は、osc パケットを送信すると、「動作しています」が「動作していません」ではなく、後続の osc パケットが処理されないことです。
simpleOSC はスレッドを使用するため、この動作に対する私の唯一の説明は、pygame がある種の互換性のないスレッド (?) を使用し、pygame のスレッドにある変数にアクセスしようとするとロックすることです。
原因と(可能であれば)解決策についてのアイデアはありますか?
python - Pygameはビットマップからマウスカーソルを設定します
私はpygameを使用して画像エディタを作成していますが、マウスカーソルをブラシに適したもの(たとえば、円や長方形)に変更できるかどうか疑問に思いました。Pygameには本当に奇妙なやり方があり、うまくいくかどうかはわかりません。ビットマップに書き込んでそれを使用する方法はありますか?
一般的にPythonでそれを行う方法があれば、それもうまくいくと思います。
python - 接続されたノードを通る最長の非反復パスの検索
私はこれに数日間取り組んできましたが、成功しませんでした。基本的に、2D マトリックスに配置された多数のノードがあります。各ノードには、それぞれ 3 つと 2 つの隣接ノードがある行列の側面とコーナーのノードを除いて、4 つの隣接ノードがあります。長方形の領域に並べて配置された正方形のカードの束を想像してみてください。このプロジェクトは、実際には一種のカード/ボード ゲームをシミュレートしています。
各ノードは、その周囲のノードに接続されている場合と接続されていない場合があります。各ノードには関数 (get_connections()) があり、接続されているノードのすぐ周囲のノードを返します (つまり、0 ~ 4 個のノードが返されます)。各ノードには、ボード マトリックス上の位置を含む "index" プロパティもあります (例: '1, 4' -> 行 1、列 4)。私がやろうとしているのは、特定の「開始」ノードを指定して、接続されたノードの最長の非反復パスを見つけることです。
私がやろうとしていることの良いアイデアを与えるはずのいくつかの画像をアップロードしました:
(ソース: requiredgames.com )
(ソース: requiredgames.com )
両方の画像で、強調表示された赤いカードは、おそらく左上のカードを含む接続されたカードの最長パスです。ただし、両方の画像で、パスにあるはずのカードがいくつか除外されていることがわかります (最初の画像ではルーマニアとマルドバ、2 番目の画像ではギリシャとトルコ)。
開始ノード/カードを指定して、最長パスを見つけるために現在使用している再帰関数を次に示します。
ここでの問題は、processed_countries リストと関係があります。私の最初のスクリーンショットを見ると、何が起こったかがわかります。ウクライナがやってきたとき、最長経路 (マルドバ-ルーマニア、またはトルコ) の 2 つの可能な選択肢を調べたことです。 、ブルガリア) は、両者が同等であることを確認し、無差別に一方を選択しました。ハンガリーがやってきたとき、ウクライナによってルーマニアがprocessed_countriesリストに追加されているため、ルーマニアを通るパスを作成しようとすることはできません(実際には最長のパスがあります).
これに関するヘルプは非常に高く評価されています。再帰的であろうとなかろうと、これに対する解決策を見つけていただければ、喜んで $$ を寄付させていただきます。
完全なソース コード (Python 2.6、Pygame 1.9 が必要) を次の場所にアップロードしました。
http://www.necessarygames.com/junk/planes_trains.zip
関連するコードは src/main.py にあり、すべて実行するように設定されています。
python - wxPython & pyGame 割り当て
私が取り組んでいる仕事について、ここであなたの助けとアドバイスを実際に必要としています。まず、ラングトンのアリのシミュレーションを実行するプログラムを実行するタスクがありました。そのために、なんとかソース コードを入手し (snippets.dzone.com/posts/show/5143 から)、要件に合わせて編集しました。これは pygame モジュール拡張で行われ、実行されました。さらに、私のタスクでは、ラングトンの ant プログラムを実行した状態で、ユーザーが画面を効果的に実行およびナビゲートするための GUI が必要です。フレーム、ボタン、テキストボックスなどを作成するために、BOA コンストラクターと呼ばれる IDE の助けを借りて wxPython を使用しました。基本的には、インターフェイスに必要なすべてのものです。
ただし、以下に示すいくつかの問題に遭遇しました。
pyGame と wxPython の統合に問題が見つかりました。
このメモでは、私はウェブサイトから見つけた回答とチュートリアルをインターネットで調査しました: wiki.wxpython.org/IntegratingPyGame & aspn.activestate.com/ASPN/Mail/Message/wxpython-users/3178042。サイトから、pyGame アプリケーションがパネル全体をカバーするため、pyGame を wxPython と統合することは、他のコントロールをフレームに配置できないなどの一般的な問題を引き起こす困難な作業になることを理解しています。これに関する私の疑問を明確にし、ここから進むべき道についてアドバイスしていただければ幸いです。したがって、私は次の質問をします。
pyGame を wxPython と統合することは可能ですか?
- pyGame を wxPython と統合することが現実的でない場合、pyGame を統合する GUI インターフェイスを作成するために他にどのような方法が必要ですか。もしそうなら、どうすればいいですか?
- pyGame を wxPython と統合できる場合、どのようにすればよいですか?
これについて皆さんの意見が本当に必要です。
python - Intel の Atom Developer SDK (C/C++) で Python を使用できますか?
だから私は Python と PyGame でゲームを作りました。Intel の March Developer Challengeにゲームを提出することに興味があります。ただし、開発者の課題では、Intel の Atom Developer SDK ( http://appdeveloper.intel.com/en-us/sdk ) を使用する必要があります。この SDK には、C および C++ 用の API しかありません。
Python と PyGame は初めてで、C や C++ の経験はありません。私の質問は、(上記の最初のリンクが示唆するように) Python アプリケーションを使用して、または Python アプリケーションから、Intel の Atom SDK を何らかの形で実装することは可能でしょうか?
Python を C に埋め込む/拡張する方法について少し読んだことがありますが、何をどこに埋め込むべきか完全にはわかりません。つまり、Cで次のようなことができることを知っています:
しかし、自分のマシンに Python と Pygame がインストールされていない人のために、Python と Pygame へのすべての依存関係についてはどうすればよいでしょうか? 通常、Py2Exe は必要な依存関係を圧縮します (私は自分のゲームを exe/zip にパッケージ化することができました) が、C 内に埋め込むというコンテキストでは、どのように処理すればよいでしょうか? これで何とかpy2exeを使用できますか、それともCに埋め込むためにまったく別のことをする必要がありますか?
私のゲーム全体を C に埋め込もうとするよりも、Python を C 検証コードで拡張するルートに進む方がはるかに簡単なように思えますが、それはオプションではないと思います。 Visual Studio 2008 '.lib'" として、アプリケーションを Visual Studio でコンパイルする必要があることを意味します...?
どんな助け、考え、またはアイデアも大歓迎です!
上記の Intel サイトで完全な SDK 開発者ガイドを見つけることができますが、C 言語 API を使用した「Hello World」は次のとおりです。
35 ページの SDK 開発者ガイド: http://appdeveloper.intel.com/sites/files/pages/SDK%20Developer%20Guide.pdf
python - Python + Pygameでフレームレート(fps)を上げる方法は?
私は、Bejeweledと10 Days地理ボードゲームのクロスとして想像している、カードを交換する小さな世界旅行ゲームに取り組んでいます。これまでのところ、コーディングは問題なく進んでいますが、フレームレートはかなり悪いです...現在、Core2Duoでは20代が低くなっています。これは、Intelの3月の開発者競争のためにゲームを作成しているので問題です。これは、パワー不足のAtomプロセッサを詰め込んだネットブックを真っ向から狙っています。
これがゲームの画面です:
(出典:necessarygames.com)
私はPythonとPygameに非常に慣れていません(これは私が最初に使用したものです)、そして悲しいことに正式なCSトレーニングが不足しています...つまり、おそらく多くの悪い習慣が起こっていると思います私のコードでは、最適化できる多くのことがあります。古いPythonの手が私のコードを見て、最適化のための明白な領域が見つからないかどうかを気にしないのであれば、私は非常に感謝しています。
ここから完全なソースコードをダウンロードできます(Python 2.6 + Pygame 1.9): http: //www.necessarygames.com/my_games/betraveled/betraveled_src0328.zip
ここでコンパイルされたexeファイル:www.necessarygames.com/my_games/betraveled/betraveled_src0328.zip
私が心配していることの1つは、イベントマネージャーです。これには、パフォーマンス全体が含まれている可能性があります。もう1つは、レンダリングです。私は、常にすべてを画面に表示しているだけです(レンダリングルーチンを参照してください)。以下の私のgame_components.pyで); 最近、変更された画面の領域のみを更新する必要があることがわかりましたが、それがどのように正確に達成されたかについてはまだ霧がかかっています...これは大きなパフォーマンスの問題である可能性がありますか?
どんな考えでも大歓迎です!いつものように、PayPal経由であなたの時間とエネルギーを「チップ」して喜んでいます。
ジョーダン
編集:
以下のアドバイスのおかげで、コードでcprofileを実行しました。誰かがこの出力を見て、何が期待され、何が期待されないかを私に知らせてくれるなら、それは素晴らしいことです。
p.strip_dirs()。sort_stats('cumulative')。print_stats()の出力は次のとおりです。
p.strip_dirs()。sort_stats('time')。print_stats()の出力は次のとおりです。
ソースの一部を次に示します。
Main.py
event_manager.py
Rooms.py
pygame - Pygame フォントが一貫していません
私は他の開発者と一緒に python+pygame でプログラムに取り組んでいますが、同じフォントが異なる方法でレンダリングされているのを見ています。ゲームと一緒に配布しているフリーフォントです。私のマシンでは、この特定のフォントは別の開発者のマシンよりも 10 ピクセル低くレンダリングされています。
これがなぜなのかについて何か考えはありますか?
python - Python ゲームのルーム/スクリーン/メニュー コントローラの問題: 古いルームがメモリから削除されない
私は文字通りここの壁に頭をぶつけています (そうです、物理的に、私の現在の場所では頭蓋を損傷しています)。基本的に、いくつかの典型的なゲームの「部屋」または「スクリーン」を備えた Python/Pygame ゲームがあります。EGタイトル画面、ハイスコア画面、実際のゲームルーム。ルームを切り替えると、何か問題が発生します。古いルーム (およびそのさまざまなアイテム) がメモリまたはイベント リスナーから削除されません。それだけでなく、特定の部屋に戻るたびに、イベント リスナーの数が増加し、RAM が消費されます。(そのため、たとえば、タイトル画面と「ゲーム ルーム」の間を行き来すると、イベント リスナーの数とメモリ使用量がどんどん増えていきます。
主な問題は、すべてのイベント リスナーが加算され始め、実際に CPU を消費することです。私はPythonが初めてで、ここで明らかに間違ったことをしているのか、それとも何なのかわかりません。
これで私を助けてくれるなら、私はあなたをとても愛しています!
以下は関連するソースコードです。http://www.necessarygames.com/my_games/betraveled/betraveled_src0328.zipにある完全なソース コード (Python 2.6 + Pygame 1.9 が必要)
メイン.PY
EVENT_MANAGER.PY
EVENT MANAGERを使用したクラスの例
python - Mac で pygame を Netbeans にインポートできない
私は python 2.6.5 と pygame 1.9.1 を実行しています。すべてを試したようですが、「モジュールが見つかりません」というエラーが表示され続けます...助けてください!
python - PGUタイルの衝突検出
私はしばらくの間PGU(Phil's Pygame Utilities)を使用しています。tdataという辞書があり、タイルの読み込み中に引数として渡されます
tdata = {tileno:(agroup、hit_handler、config)}
同じタイプのタイルとの衝突検出を行うために、プレーヤーとゴーストの2つのグループを持つpacmanクローンを作成しています。
たとえば、タイル番号が2の場合、このタイルにプレーヤーとゴーストの両方としてグループを持たせたいと思います。私は次のことを試みました:
tdata = {0x02 :('player'、tile_hit_1、config)、0x02:('ghost'、tile_hit_2、config)}
ただし、これを行うと、プレイヤーではなく、ゴーストの衝突検出のみが行われます。
同じタイプのタイルでプレイヤーとゴーストの両方の衝突検出を行う方法について何かアイデアはありますか?