我只想让这个骰子滚动一次,但当我击中太空时,它会滚动50次。怎么了!?在
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit(); sys.exit()
pygame.display.update()
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
diceRoll = random.randint(1, 4)
diceRollLabel = myFont.render(str(diceRoll), 1, black)
window.blit(diceRollLabel, (580, 35))
print("Dice roll test", diceRoll)
pygame.display.update()
以下是最初发布的代码:
^{pr2}$
如前所述,您的代码只会引发一个
IndentationError
并拒绝运行。所以你的真实代码可能是不同的缩进。很可能是这样:不是检查每个事件的
event.type == KEYDOWN
,而是检查所有事件,然后检查最后一个事件是否有event.type == KEYDOWN
。直到有一个新的事件,每次通过外循环,最后一个事件仍然是空间KEYDOWN
。在如果这是问题所在,要解决它,只需将
^{pr2}$if
放入for
循环中。您大概也希望update
也在里面。所以:许多新手遇到这种缩进问题的一个原因是,他们使用的编辑器允许他们混合制表符和空格,而且没有办法区分这两者,比如记事本或TextEdit。如果是这样的话,你真的想找到几乎任何其他的编辑器。另外,可以使用
-tt
标志运行Python,如果在代码中混合使用制表符和空格,则会出现错误,从而更容易发现不可见的问题。在相关问题 更多 >
编程相关推荐