我在Pygame中的游戏出现了一些问题。我想让Windows右上角的十字架在点击后退出游戏。但它似乎不起作用。我还想让它从空格键输入并掷骰子。
diceRoll = random.randint(1, 4)
while True:
events = pygame.event.get()
for event in events:
if event.type == pygame.KEYDOWN:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.key == pygame.K_SPACE:
diceRoll
其余的代码都属于这个范围,但当我用这个循环时,屏幕会变黑。
要告诉PyGame正确退出,必须执行
if event.type == pygame.QUIT:
pygame.quit()
# perhaps force a quit using sys.exit()
如果你在一个循环中,你也应该打破这个循环,使用break
对于空格键活动,您已经完成了一半。
if event.key =0 pygame.K_SPACE:
roll_dice()
您的第一个if
语句犯了一个非常大的错误。您应该使event.type
行彼此对齐。你正在这样做:
if event.type == pygame.KEYDOWN:
if event.type == pygame.QUIT:
什么时候应该这样做:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
pass #Put your other code here
第二个错误是您将pygame.quit
放入while循环中。它会退出游戏/让屏幕上什么都没有,让你的程序变得疯狂。在循环内安全退出程序的唯一逻辑方法是使用sys.exit()
。因此,您的新while循环应该是:
while True:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
print 'diceRoll' #Doing diceRoll alone won't do anything
pygame.quit() #This is the proper location of this function
我希望这对你有帮助!