【问题标题】:How can I make it so that something happens in pygame when I type a number [duplicate]当我输入一个数字时,我怎样才能使它在pygame中发生一些事情[重复]
【发布时间】:2021-11-14 17:19:00
【问题描述】:

我的代码是:

keys = pygame.key.get_pressed()
  if keys[pygame.K_1]:
    if money >= worker_cost:
      money -= worker_cost
      workers += 1
      worker_cost = round(worker_cost*1.1, 2)

所以我正在尝试在 pygame 中制作游戏,但是当我将其放入以检测用户何时想要购买东西时,它不会检测到我按下了任何东西。我尝试将打印命令放入 if 循环中以查看循环是否开始,但它没有。任何提示将不胜感激

【问题讨论】:

  • 您的代码中没有循环,您是否尝试过检查它是否完全注册了新闻(将print放在if keys[pygame.K_1]:块(外部)中,可能不满足第二个条件?)?你在主循环的任何地方都调用pygame.event.get() 吗?它必须被调用

标签: python input pygame


【解决方案1】:

使用键盘事件代替pygame.key.get_pressed()

pygame.key.get_pressed() 返回一个包含每个键状态的列表。如果按住某个键,则该键的状态为True,否则为False。使用pygame.key.get_pressed() 评估键的当前状态并获得连续移动。

键盘事件(请参阅pygame.event 模块)仅在按键状态更改时发生一次。每次按下某个键时,KEYDOWN 事件就会发生一次。每次释放键时,KEYUP 发生一次。将键盘事件用于单个操作:

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False 

        if event.type == pg.KEYDOWN:
            if event.key == pg.K_1:

                # do action
                if money >= worker_cost:
                    money -= worker_cost
                    workers += 1
                    worker_cost = round(worker_cost*1.1, 2) 

    # [...]

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多