合計のpython初心者がここにあります。PythonとPygletの入力
私はPythonライブラリPygletでゲームを作ろうとしています。私は入力が必要な部分に到達するまで、それは素晴らしい仕事をしてきました。
私は例とドキュメントに従っており、私のコードはこのように見えます。私は、キーボード入力が同じように動作するように見えるので、今はマウス入力にのみ焦点を合わせます。
import pyglet
import button
from pyglet.window import key
class GameWindow(pyglet.window.Window):
def __init__(self):
super(GameWindow, self).__init__()
self.button = button.Button()
def on_draw(self):
self.clear()
def on_mouse_press(self, x, y, button, modifiers):
self.button.on_mouse_press(x, y, button, modifiers)
print("mouse pressed")
def on_key_press(self, symbol, modifiers):
print("key pressed")
def on_mouse_motion(self, x, y, dx, dy):
print("mouse moved")
def update(dt):
pass
#initializes window and keyboard
window = GameWindow()
keys = key.KeyStateHandler()
window.push_handlers(keys)
pyglet.clock.schedule_interval(GameWindow.update, 1/60.0)
if __name__ == '__main__':
pyglet.app.run()
コードはうまく動作しますが、これは私の質問です。入力を処理する正しい方法ですか? ボタンクラスに手動でパラメータを手動で送信する必要がありますか? ボタンクラスが入力用の関数をオーバーライドすることはできないので、ボタンは入力自体を収集しますか?
私のようなウィンドウを作成して、たとえばButtonクラスのような別の無関係なクラスで入力を集めることは可能ですか?
現在のところ、私はボタン、チャットウィンドウ、物理学、その他の場所への入力を送らなければなりません。私は後ろにそれをやっていることを恐れて、それは後でお尻に私をかむでしょう。
あなたの答えをありがとうが、私はマリオブラザーズを作成していると言うことができ、私はマリオに関連するすべてを処理するクラスがあります。私はどのように行って、マリオのクラスにその入力を得るでしょうか?あなたのバージョンは、私が基本的にメインからMario.Input(ボタン)を実行することを示唆しています。それはそれを行う最善の方法ですか? – Mattias
@Mattiasこれはすべてあなたがメインクラスから制御したい**ものになります。例えば、ユーザー入力の場合、私はメインクラスにメインキャラクターの移動をさせながら、通常はスプライトに渡します。私は例を挙げて答えを更新します。メインクラスから制御される最小限の機能を備えた**スプライト**クラスを追加する必要はありませんでした。そして、はい、これは基本的に物事を設定する方法です。 – Torxed
ありがとうございます。それが私が知りたかったものです。 – Mattias