我正在编写一个机器人,我想使用pygame使用Xbox控制器。到目前为止,这是我得到的(Daniel J. Gonzalez的原始代码):
"""
Gamepad Module
Daniel J. Gonzalez
dgonz@mit.edu
Based off code from: http://robots.dacloughb.com/project-1/logitech-game-pad/
"""
import pygame
"""
Returns a vector of the following form:
[LThumbstickX, LThumbstickY, Unknown Coupled Axis???,
RThumbstickX, RThumbstickY,
Button 1/X, Button 2/A, Button 3/B, Button 4/Y,
Left Bumper, Right Bumper, Left Trigger, Right Triller,
Select, Start, Left Thumb Press, Right Thumb Press]
Note:
No D-Pad.
Triggers are switches, not variable.
Your controller may be different
"""
def get():
out = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
it = 0 #iterator
pygame.event.pump()
#Read input from the two joysticks
for i in range(0, j.get_numaxes()):
out[it] = j.get_axis(i)
it+=1
#Read input from buttons
for i in range(0, j.get_numbuttons()):
out[it] = j.get_button(i)
it+=1
first = out[1]
second = out[2]
third = out[3]
fourth = out[4]
return first, second, third, fourth
def test():
while True:
first, second, third, fourth = get()
pygame.init()
j = pygame.joystick.Joystick(0)
j.init()
print 'Initialized Joystick : %s' % j.get_name()
test()
您是否看到名为“out”的列表?其中的每个元素都是Xbox控制器上的一个按钮。我想提取这些元素并将它们放在变量上,每个元素/按钮都有一个变量,这样我就可以控制我的机器人了。
我怎么能这样做? 我试图使用全局变量,但后来一切都变得一团糟。 请注意,我是Python的初学者。
答案 0 :(得分:1)
如果您想在程序中使用out
,只需从函数get
中返回它:
def get():
# rest of the code ...
return out
同时更改功能测试:
def test():
while True:
out = get()
LThumbstickX = out[0]
LThumbstickY = out[1]
# and so on
然后像以前一样运行你的程序。函数test
的作用是不断地(while True
)读取键盘。例如,您可以这样做:
def test():
while True:
out = get()
LThumbstickX = out[0]
if LThumbstickX != 0:
print 'Left button has been pressed'
# and so on
答案 1 :(得分:1)
您只需返回列表并使用python的解包功能:
def get():
out = [1,2,3,4]
return out
first, second, third, fourth = get()