Python 如何检测pygame中控制器中的哪个特定按钮被释放
我试图检测哪个按钮正在从我的控制器被按下,以及何时被释放。 这就是我所能做到的Python 如何检测pygame中控制器中的哪个特定按钮被释放,python,python-3.x,pygame,Python,Python 3.x,Pygame,我试图检测哪个按钮正在从我的控制器被按下,以及何时被释放。 这就是我所能做到的 导入pygame pygame.init() j=pygame.操纵杆.操纵杆(0) j、 init() 尝试: 尽管如此: events=pygame.event.get() 对于事件中的事件: 如果event.type==pygame.JOYBUTTONDOWN: 如果j.get_按钮(1): 打印(“x”) elif j.get_按钮(2): 打印(“a”) elif event.type==pygame.JO
导入pygame
pygame.init()
j=pygame.操纵杆.操纵杆(0)
j、 init()
尝试:
尽管如此:
events=pygame.event.get()
对于事件中的事件:
如果event.type==pygame.JOYBUTTONDOWN:
如果j.get_按钮(1):
打印(“x”)
elif j.get_按钮(2):
打印(“a”)
elif event.type==pygame.JOYBUTTONUP:
打印(“按钮释放”)
除键盘中断外:
打印(“立即退出”)
j、 退出
我是编程新手,我不完全理解这段代码。
它检测是否按下x或a以及是否释放任何按钮。我想让它检测x或a是否被按下以及何时被释放。
谢谢你的阅读 pygame.event.get()返回事件列表(事件是当用户移动鼠标/按下按钮e.t.c.时生成的pygame结构/对象的一种类型)。然后,对于这些事件中的每一个,检查它们是否是您想要的事件(pygame.JOYBUTTONDOWN或event.type,pygame.JOYBUTTONUP)。
您只能检查按钮是否按下,然后查看按下了哪个按钮
如果event.type==pygame.JOYBUTTONDOWN:
如果j.get_按钮(1):
打印(“x”)
elif j.get_按钮(2):
打印(“a”)
要想知道按钮何时被释放,我能想到的最好的办法就是列出按钮的状态。当按钮的状态改变时,你可以做一些事情
ButtonStatus[2];
ButtonStatus[0]=get_button(1);#a
ButtonStatus[1]=get_button(2);#x
if event.type == pygame.JOYBUTTONUP:
if ButtonStatus[0]!=get_button(1)
#status changed do yr code for button release a
pass;
if ButtonStatus[1]!=get_button(2)
#status changed do yr code for button release b
pass;
上面的代码是一个未实际编译的示例。一般的想法是检查按钮何时被释放,检查哪个按钮改变了状态并相应地执行代码。所以,我在其他答案的帮助下编写了我需要的代码
import pygame
pygame.init()
j = pygame.joystick.Joystick(0)
j.init()
r = 2
t = 5
b = 1
x = 3
try:
while True:
events = pygame.event.get()
for event in events:
if event.type == pygame.JOYBUTTONDOWN:
if j.get_button(1):
print("B")
b = 2
elif j.get_button(2):
print("X")
x = 5
elif event.type == pygame.JOYBUTTONUP:
if b == r :
print("b2")
b = 1
if x == t:
print("x2")
x = 3
except KeyboardInterrupt:
print("EXITING NOW")
j.quit()
这在任何方面都不可靠。您需要为所需的每个按钮创建新字符串。
您可以通过复制包含最大变量的按钮,并在您复制的代码中的每个变量中添加3来实现这一点。如果你能给出一个更好的答案(可能存在),请回答原始帖子。此外,当你同时按下多个按钮并至少释放一个按钮时,它会认为你已经释放了所有按钮。@Mikekmp你无法“阅读”关于
按钮状态的信息。您必须定义一个列表ButtonStatus
,该列表存储按钮的状态。@rabbi76 Ohhhhhhhhh ok。我对编程非常陌生,所以我不容易理解这些东西。