pyglet でマウス位置を取得

ゲームを作るには、とりあえずは何か入力が取得できないとですね。マウスを試してみました。

Mouse input — pyglet v2.0.15

マニュアルを読むと、on_mouse_xxx みたいな関数を作ればいいのですね。まずは位置と移動量を取ってみましょう。前のプログラムとほとんど一緒ですけれど。

import pyglet

window = pyglet.window.Window()
window.set_mouse_visible(True)

label = pyglet.text.Label('Mouse Test',
                          font_name='Times New Roman',
                          font_size=36,
                          x=window.width//2, y=window.height//2,
                          anchor_x='center', anchor_y='center')

@window.event
def on_draw():
    window.clear()
    label.draw()

@window.event
def on_mouse_motion(x, y, dx, dy):
    label.text = 'x={} y={} dx={} dy={}'.format(x, y, dx, dy)

pyglet.app.run()
  • 最初はマウスカーソルがどこにあるか見えた方が助かるので、window.set_mouse_visible(True) でカーソル表示を有効に
  • def on_mouse_motion 関数を用意して、ラベルを入ってきた値で書き換えてしまう(こんなのやってしまっても、あっさり動いてくれますね)

以上が前回からの変更点です。マウスカーソルの画面キャプチャに失敗してますが、窓の左下の方にカーソルを持って行ったときの表示がこんなのです。ドキュメントの通り、左下が (x, y)=(0, 0) になっているのがわかりますね。

タイトルとURLをコピーしました