密钥不会注册(pygame)-我坚信pygame会坏掉

时间:2019-02-16 05:14:39

标签: python python-3.x pygame python-3.7

为什么这不起作用

import pygame

pygame.init()

while True:
    pressed = pygame.key.get_pressed()
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if pressed[pygame.K_w]:
                print("w is pressed")
            elif pressed[pygame.K_s]:
                print("s is pressed")

我今天安装了pygame和python。从理论上讲,它应该是pygame和python的最新版本。这段代码经过了多次迭代,但都没有成功。我什至尝试过:

print(pygame.key.get_pressed()[pygame.K_w])

并且仅打印0。即使按住w。我已经尝试了一切。 我尝试使用:

pygame.event.pump()

但是什么也没做。

没有错误或任何东西,什么都没有发生。它只是在屏幕上打印我输入的内容。

我以前从未发布过stackoverflow信息,对不起,如果我做错了什么。

编辑: 我从这里的某个地方更改了代码

import pygame

pygame.init()

while True:
    for event in pygame.event.get() :
      if event.type == pygame.KEYDOWN :
        if event.key == pygame.K_SPACE :
          print ("Space bar pressed down.") #Here you should put you program in the mode associated with the pressed SPACE key
        elif event.key == pygame.K_ESCAPE :
          print ("Escape key pressed down.")
      elif event.type == pygame.KEYUP :
        if event.key == pygame.K_SPACE :
          print ("Space bar released.")
        elif event.key == pygame.K_ESCAPE :
          print ("Escape key released.") #Time to change the mode again

什么都没有。绝对没有。

2 个答案:

答案 0 :(得分:1)

pygame.key.get_pressed()将评估pygame.event.get()返回的状态。

此人<!DOCTYPE html> <html> <head> <title> Multiplication Table </title> </head> <body> <form method="POST" action="#"> Enter Multiplier: <input type="text" name="mult"> <br> <input type="submit" name="m" value="Multiply"> </form> <table border="1"> <?php if(isset($_POST["m"])){ $mult = 0; $x = 1; $mulpli = 1; $pro = 0; $mult=$_POST["mult"]; while($mulpli <= $mult) { echo "<tr>". "<th>". " "; echo "<th>". $mulpli; while($x <= $mult) { $pro=$x*$mulpli; echo "<tr>"; echo "<th>". $x; echo "<th>". $pro; $x=$x+1; } $x = $x-$mult; $mulpli=$mulpli+1; } } ?> </th></th></tr></th></th></tr> </table> </body> </html> 必须首先完成。请注意,如果您按相反的顺序进行操作,并且发生按键事件,则事件循环将运行,但是pygame.event.get()已返回不赞成使用的状态。因此状态pygame.key.get_pressed()pressed[pygame.K_w]永远不会在循环的同一轮中被实现。该操作将在2个连续的运行循环中完成。

像这样更改代码,以解决该问题:

event.type == pygame.KEYDOWN

答案 1 :(得分:0)

您没有创建屏幕。我不确定这是否重要,但我怀疑确实如此。

此外,您正在混合“ pygame.event.get()中的for事件”模式和“ pygame.key.get_pressed()”模式。