問題タブ [pygame-surface]

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.

0 投票する
1 に答える
1018 参照

python - Pygame スプライトに Rect 属性を持たせる方法

私は 2 つのスプライトを持っています。ありがとう。

これが私のコードです:

0 投票する
1 に答える
731 参照

python - Pygame、Python 3 での斜めのスプライトの動き

私は現在、Pygame、Python 3 を使用してゲームを作成しています。バグの 1 つは、ショットの移動方法です。このゲームは 2D のトップダウン シューティング ゲームであり、プレイヤーのシューティング メカニックのコードは次のとおりです。

(player_rectはプレーヤーの Rect で、 bullet_speed は事前定義されたint)

ループの後半には、コードの次の部分があります。

このメカニズムは、1 つの大きなバグを除いて、ほとんど問題なく動作します。ショットが遅くなるほど、精度が低下し、pygame.Rect[0]整数pygame.Rect[1]値しか使用できなくなります。たとえば、player_rect.center(0, 0)、マウスの位置が(100, 115)、 bullet_speed が10の場合、x_speed自動的に7y_speedに丸め8られ、弾丸は最終的にポイントを通過します(98, 112)。ただし、 bullet_speed が5の場合、弾丸はポイントを通過します(99, 132)

pygameでこれを回避する方法はありますか?

助けてくれてありがとう!

0 投票する
1 に答える
739 参照

pygame - スプライトを使用してpygameで画像を回転させます

私は pygame でゲームを作っていて、画像を回転させたいと思っていました。pygame.transform.rotate画像のサイズを増やし続けたので、スプライトが画像の回転に役立つのではないかと考えました。しかし、問題はもっと複雑です。表面のどこかをクリックしたいのですが、画像をその方向に向けたいので、オブジェクトが作成できる回転数は無限にあります。誰かがこれを行う方法について説明してもらえますか?

0 投票する
1 に答える
972 参照

python - pygameで線を引いて色を変えるにはどうすればよいですか?

学校のプロジェクトで pygame で描画プログラムを作成しようとしています。このモジュールでは、ユーザーがマウスを押し下げて表面に線を引くことを意図しています。人が四角形を押し下げると、その人が選択した色が描画される線の色になります。何らかの理由で変数が変化することがありますが、マウスを押しても線が引かれません。コードは次のとおりです。

0 投票する
2 に答える
39 参照

python - pygame サーフェスの更新に失敗する

私はパイゲームゲームを作っています。私は 3 つの面を持っています: gameDisplay(キャラクターと背景が直接レンダリングされる場所)、guiSurfそしてinvSurf pygame フォントでゲーム時間を表示するコア pyhon で作られた時計があります。クロックを にブリットし、ゲームループで とにguiSurfブリットguiSurfします。私の問題は、時計が元の場所から跡を残すことです. IE が「07:00」から「07:01」に変わると、「01」が存在しない「00」の上に表示されます。コードを投稿しますが、400行ほどあります。誰かが私が間違ったことをしたかもしれないという考えを持っていますか? 時計の写真へのリンクinvSurfgameDisplay

0 投票する
2 に答える
2099 参照

python - pygameでユーザークリックの位置を取得する

tkinter の aa フレームに埋め込まれた pygame ウィンドウがあります。別のフレームには、クリックすると次の関数を呼び出すボタンがあります。

ボタンがクリックされた後、ユーザーがpygameサーフェスでクリックした場所の位置をプログラムが出力することを意図しています。ただし、ボタンの最初のクリックと次の pygame サーフェスのクリックでは、出力はありません。Python が次のような出力を出力するのは、pygame サーフェスで対応する 2 回目のクリックの前にボタンを2 回クリックしたときです。

('開始', (166, 115))

pygame サーフェスをクリックした直後に結果を得るにはどうすればよいですか? 私は2つの別々のtkinterとpygameウィンドウを持っていたときに同じ問題を抱えていたので、tkinterへのpygameの埋め込みが問題の原因になる可能性は低いです。

編集:さらにテストした後、ボタンが押されてからpygameサーフェスが複数回クリックされた場合、ボタンを2回クリックすると、これらすべてのクリックの座標がバッチとして出力されるようです。

0 投票する
0 に答える
128 参照

python - pygame は、Surface.fill をその境界の外に出る rect とゼロ以外の PYGAME_BLEND フラグで使用するとクラッシュします。

fillと の両方の引数を使用して Surface でrect使用しようとするとspecial_flags、Surface の領域をエスケープする rect ディメンションを指定した場合、pygame が数秒間遅れ、通知なしでクラッシュします。

IDLE を使用したテストの結果は次のとおりです。

この再起動は、ソフトウェアと対話する方法、または対話しない方法に関係なく発生します。pygame.init()後で呼び出すかどうかに関係なく発生しますimport pygame

完全にサーフェスの境界 (この場合は(0,0,50,50)) 内にある rect 引数を使用すると、正常に機能します。0または、引数を省略したり送信したりしても、special_flagsこの問題は発生しません。サーフェスに含まれるピクセルは通常どおりに変更され、エッジから「こぼれる」ものはすべて無視されます。

私が知りたいのは、この不思議で説明のつかない方法で pygame がクラッシュする原因は何ですか?

私はpygame 1.9.1とpython 2.7.10を使用しています。


ソリューション

この問題に苦しむ将来の読者は、少なくとも 3 つの方法のいずれかで問題を回避できます。ここでそれらをあなたと共有します:

  • クリップされたrect引数を使用します。

    rect 引数を に置き換えfillますtest_surf.get_rect().clip(test_rect)。宛先サーフェスの境界にclip制限します。test_rect共通のピクセルがない場合は、形状パラメータを持つ安全な四角形を返します<0, 0, 0, 0>

  • blit代わりに2 番目のサーフェスを使用してください。

    新しいサーフェスを作成し、BLEND モードを使用せずに必要な RGB 値 (アルファを除く) で塗りつぶし、 を使用set_alphaして目的の不透明度をサーフェスに適用し、最後blitに新しいサーフェスをtest_surf、または適切なdest値を使用してターゲットが何であれ(私の場合は(33,33)) と BLEND モード (私の場合はpygame.BLEND_RBGA_MULT) です。

  • バグとバグで戦う。

    3 つ目の、より不可解な解決策は、test_surf.fill(test_rgba, (0,0,0,0), pygame.BLEND_RGBA_MULT)範囲外の rect を実行する前に呼び出すことです。これが何をしても、問題なく後続の BLENDed フィルで範囲外に安全に移動できるように pygame を修正するようです。さらに、範囲外を試みると、その後の任意のサーフェスでの BLENDed 塗りつぶしは安全に見えます。また、ゼロ ピクセルの BLENDed-fill が行うことは何でも、そのセッションでクラッシュが再び発生しないように、pygame の機能不全の要素を修正するようです。

    この 3 番目のソリューションは十分にテストされていないことに注意してください!!

幸運を!