我想用Pygame做一个iwanna游戏,其中跳跃要按Shift,发子弹要按Z键,每次按一下Z键,再按一下Shift,再按一下Z键,最后按Shift时就没反应了,只能把窗口最小化再打开才有反应,请问如何解决这一问题?
其中游戏键盘侦测和Shift键盘判断代码如下:
for event in pygame.event.get():
if event.type == pygame.QUIT:
Exit()
if event.type == pygame.KEYDOWN:
Pkey.append(event.key)
if event.type == pygame.KEYUP:
try:
Pkey.remove(event.key)
except:
pass
if(pygame.K_LSHIFT in Pkey) or (pygame.K_RSHIFT in Pkey):
player.jump()
try:
Pkey.remove(pygame.K_LSHIFT)
except:
Pkey.remove(pygame.K_RSHIFT)
其中Pkey是按下键盘列表,在运行循环之前已经清空。
Pkey = []
运行结果大部分挺完美的,但美中不足的是每次按下其他字母按键两次后再按Shift或Ctrl就侦测不到了,导致程序在运行过程中跳跃(Shift)常常会被打断。
目前还无法在程序上做改进,唯一的方法就是最小化窗口再打开,或是在Win10的任务窗口中切换窗口再换回来,但这样很麻烦。
想要达到的结果很简单,就是按下字母按键后再按Shift能畅通无阻,不会造成键盘侦测失灵。盼望各位能给一个好的答案!
可能是输入法的问题,如果是中文输入法可能是在打字,你按下回车或者换成英文输入法试试
感觉代码没有问题啊,是不是操作系统的键冲突了?
顺便问一下,你是想做组合键吗?不然为什么判断列表,而不是单独判断每次按下的键?