Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PyGame中的操纵杆模块_Python_Pygame_Joystick_Gamepad - Fatal编程技术网

Python 使用PyGame中的操纵杆模块

Python 使用PyGame中的操纵杆模块,python,pygame,joystick,gamepad,Python,Pygame,Joystick,Gamepad,可以找到带有注释的确切代码,或 在在线PyGame文档的帮助下,我能够生成一个屏幕,显示各个操纵杆的值我如何将这些值转换为一个表示此按钮已按下的事件,现在执行此操作? 类似这样的东西, for i in range( axes ): axis = joystick.get_axis( i ) textPrint.print(screen, "Axis {} value: {:>6.0f}".format(i, axis) ) if Joystick 2's Axi

可以找到带有注释的确切代码,或

在在线PyGame文档的帮助下,我能够生成一个屏幕,显示各个操纵杆的值我如何将这些值转换为一个表示此按钮已按下的事件,现在执行此操作?

类似这样的东西,

for i in range( axes ):
    axis = joystick.get_axis( i )
    textPrint.print(screen, "Axis {} value: {:>6.0f}".format(i, axis) )

    if Joystick 2's Axis 3 is equal to 1:
        print("Joystick 2 is pointing to the right.")

    if Joystick 2's Axis 3 is equal to -1:
        print("Joystick 2 is pointing to the left.")

textPrint.unindent()

大多数游戏将gamepad输入作为“主循环”的一部分进行处理,主循环每帧至少运行一次。如果您有读取gamepad输入的代码,那么您应该将其放入主循环(可能在顶部附近),然后再执行另一个步骤来处理输入并更新游戏状态。这就是你应该做的事情,比如查看按钮值,并决定如何将它们转化为游戏动作。更新游戏状态后,您可以重新绘制显示以匹配新游戏状态,并等待下一帧


您也可以将gamepad输入视为事件,并同步处理它们,但很难做到这一点,因为输入可以随时出现。对于大多数应用程序,最好一次处理所有gamepad输入。如果同步处理输入更改,则当更新应合并在一起时,可以将其视为独立的更新。例如,当操纵杆移动时,X和Y变化应视为同一输入变化的一部分。如果你不小心,单独处理它们会在游戏中转换为移动时产生一种阶梯模式。

听起来你想要一个教程,但这不是堆栈溢出的目的。我可以给你看一个简单的例子,在这个例子中,如果你愿意的话,我可以移动一个矩形。@skrx这将是理想的!你在读《街机游戏教程》吗?这里有一个例子:Thank@skrx,我明天一定会查看。我只添加几行代码,以防止在您的操纵手柄杆磨损时发生“杆漂移”。您也不必将轴位置(
horiz\u axis\u pos
)转换为整数。
for i in range( axes ):
    axis = joystick.get_axis( i )
    textPrint.print(screen, "Axis {} value: {:>6.0f}".format(i, axis) )

    if Joystick 2's Axis 3 is equal to 1:
        print("Joystick 2 is pointing to the right.")

    if Joystick 2's Axis 3 is equal to -1:
        print("Joystick 2 is pointing to the left.")

textPrint.unindent()