0

私はpygletで簡単なゲームを書こうとしていますが、ゲームパッドの入力にはpygameを使用しています。次のコードは、軸の値をコマンド ラインに正常に出力しますが、pyglet のインポートは別として、実際には pyglet ウィンドウを表示しません。

import pygame
import math
import sys
import pyglet

pygame.init()
pygame.joystick.init()    
js = pygame.joystick.Joystick(0)
js.init()

while True:
    pygame.event.get()
    jx = js.get_axis(0)    
    print('axis 0: ' + str(jx))

pygame.event.get() が果たす役割はわかりませんが、それがないと、返される軸の値は常にゼロになります。

そのため、pyglet イベントでジョイスティックを使用しようとすると、常に値としてゼロが返されます (スティックを所定の位置に保持し、ウィンドウを動かして描画イベントをトリガーしても)。

import pygame
import math
import sys
import pyglet

pygame.init()
pygame.joystick.init()    
js = pygame.joystick.Joystick(0)
js.init()

window = pyglet.window.Window()

@window.event
def on_draw():
    jx = js.get_axis(0)    
    print('axis 0: ' + str(jx))
    window.clear()

pyglet.app.run()

pygame.event.get() を on_draw() に投げると、コンソール出力なしでドラッグできない空白の白いウィンドウが表示されます (esc を押してウィンドウを閉じて終了するまで、その時点でいくつかの軸の値が表示されます)。印刷され、すべてゼロ)。event.get() がブロックされてスタックしていますか?

したがって、 https: //groups.google.com/forum/?fromgroups=#!msg/psychopy-users/GWNE4RvGbRE/ TNRKM1L2PBwJで提案されていることにもかかわらず、pygame Joystick を使用するには、インポートして初期化するだけではないようです。

おそらく、pygame のイベント処理を使用すれば機能しますが、pygame のイベント ハンドラーから pyglet を使用して描画する場合、独自の問題が発生する可能性があります。

4

2 に答える 2

1

ジョイスティックのサポートを含む Pyglet 1.21alpha を使用して、この問題を回避します。

于 2012-10-11T12:07:53.920 に答える
0

あなたの問題は、whileループに入れていないことだったと思います。そうすれば、一度だけ印刷されるわけではないので、たとえば、関数(私はテストしていません)が動作するはずですが、次のようになります。

def on_draw():
 while True:
  jx = js.get_axis(0)
  print('axis 0: '+ str(jx))
  window.clear()
于 2014-12-15T19:01:53.063 に答える