检测何时按下一个键以及何时按下另一个键时断开[Python]

2024-06-28 19:03:43 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我正在制作一个没有PyGame的游戏,我想添加一个部分,在该部分中,您可以根据字母的“数字”尝试按正确的键盘字母,这意味着a-1、B-2、C-3等。我想让它成为一个这样,您就不能将每个键都捣乱,所以我添加了一个计数器。但是,计数器不工作。救命啊

def keyboardpart(l,x,num):
    for i in range(num):
        keypress = False
        c = 0
        dn = random.randint(0,25)
        var = l[dn]
        print(dn+1)
        flag1 = False
        start = time.time()
        while time.time()-start < x:
            if keypress and not keyboard.is_pressed(var):
                if c > 3:
                    break
                c+=1
            elif keyboard.is_pressed(var) and not keypress:
                keypress = True
        print(keypress,c)
        if not keypress:
            print("Sorry, you missed that key.")
            flag1 = True
            break
    if flag1:
        keyboardpart(l,x,num)

Tags: andfalseiftimevar字母计数器not
1条回答
网友
1楼 · 发布于 2024-06-28 19:03:43

检查是否按下任何键,然后检查是否按下目标键。在重试之前,请等待所有密钥释放

请尝试以下代码:

import random, keyboard, time

l = [chr(65+i) for i in range(26)]  # A-Z

def keyboardpart(l,x,num):
    for i in range(num):
        keyboard.is_pressed(65)  # process OS events
        while len(keyboard._physically_pressed_keys): pass # wait until keys released
        keypress = False
        c = 0
        dn = random.randint(0,25)
        var = l[dn]
        print(dn+1, l[dn])
        flag1 = False
        start = time.time()
        while time.time()-start < x:
            if len(keyboard._physically_pressed_keys):  # any key down
               if keyboard.is_pressed(var):  # check target key
                   keypress = True
                   break
               else:  # wrong key
                   c+=1
                   if c >= 3: break   # allow 3 tries
                   while len(keyboard._physically_pressed_keys): pass # wait until keys released
               print(keypress, c)
        print(keypress,c)
        if not keypress:
            print("Sorry, you missed that key.")
            flag1 = True
            break
             
    if flag1:
        keyboardpart(l,x,num)
        
keyboardpart(l,100,4)

相关问题 更多 >