2012-10-10 75 views
0

我正在嘗試用pyglet編寫一個簡單的遊戲,但使用pygame作爲遊戲手柄輸入。下面的代碼成功打印軸值,但除了導入pyglet在命令行中,實際上並沒有表現出pyglet窗口:在pyglet中使用pygame遊戲杆

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的操縱桿似乎不僅僅是在導入和初始化更多的參與。

也許,如果我使用pygame中的事件處理它的工作,但是從pygame的,甚至處理與pyglet繪製時可能有其自身的問題。

回答

1

那麼我就避開這個問題,通過使用Pyglet 1.21alpha,其中包括支持操縱桿。

0

我覺得你的問題是,你沒有把它放在一個while循環。這樣它不只是打印一次,所以例如你的功能(我沒有測試過),但應該工作,看起來像這樣。

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