繁体   English   中英

按下某个键时,将变量增加1

[英]Increase a variable just by one when a key is pressed

我有我想要一个,当一个键减少可变状态计数器a接一个,当被压,增加d按下键。

我提出了一个问题的灵感:当按下一个键时,只增加一个,但是我的代码没有按预期工作,当我将was_pressed变量重置为false ,状态计数器开始增加。

running = True
state_counter = 0
number_of_states = 0
was_pressed = False

import pygame

while running:
    for event in pygame.event.get():
        if event.type == QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
        # The user closed the window or pressed escape
        running = False

        if event.type == KEYDOWN and event.key==K_a:
            if not was_pressed:
                state_counter -= 1
                print("state_counter %d times"%state_counter)
                was_pressed = True
            else:
                was_pressed = False

        elif event.type == KEYDOWN and event.key == K_d:
            if not was_pressed:
                state_counter += 1
                print("state_counter %d times"%state_counter)
                was_pressed = True
            else:
                was_pressed = False
pygame.quit()
print('Done!, state counter is: ', state_counter)

问题是我需要增量和减量变量(这就是与上述问题的区别),当然我需要变量来改变每次按键(这可能也是上一个问题的情况)但我无法做到这一点)。 我也不能time.sleep()因为我不想让程序睡觉。

任何帮助表示感谢,非常感谢您提前。

KEYDOWN事件仅在按下键时发生一次。 当密钥保持时,它不会连续出现。 所以不需要was_pressed状态:

while running:
    for event in pygame.event.get():
        if event.type == QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
            # The user closed the window or pressed escape
            running = False

        if event.type == KEYDOWN and event.key==K_a:
            state_counter -= 1
            print("state_counter %d times"%state_counter)

        elif event.type == KEYDOWN and event.key == K_d:
            state_counter += 1
            print("state_counter %d times"%state_counter)
import pyautogui
import pygame
Number_of_Presses = 0
for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
       if event.key == pygame.K_a:
            Number_of_Presses -= 1
            print (Number_of_Presses)
    if event.type == pygame.KEYDOWN:
       if event.key == pygame.K_d:
            Number_of_Presses += 1
            print (Number_of_Presses)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM