【问题标题】:Quit from program in pygame [duplicate]从pygame中的程序退出[重复]
【发布时间】:2020-11-28 20:10:46
【问题描述】:

我试图了解为什么我的程序在我尝试退出游戏时失去响应。我做了一些测试,代码如下:

import pygame
import time

pygame.init()

run=True

pygame.display.set_caption("test")
win=pygame.display.set_mode((200,200))

while run==True:
    pygame.time.delay(16)
    keys=pygame.key.get_pressed()
    #for event in pygame.event.get():
        #if event.type == pygame.QUIT:
            #run=False

    win.fill((125,125,125))
    if keys[pygame.K_q]:
            run=False
    pygame.display.update()
pygame.quit()

如果执行此代码 - 当用户按下“q”键时,Windows 无法正确退出程序。 如果删除 cmets 符号 #form 14,15,16 字符串,一切都会正常工作。按“q”键将正常退出程序。 只有一个问题——为什么???

【问题讨论】:

    标签: python python-3.x pygame key exit


    【解决方案1】:

    您必须在应用程序循环中处理事件。分别见pygame.event.get()pygame.event.pump()

    对于游戏的每一帧,您都需要对事件队列进行某种调用。这确保您的程序可以在内部与操作系统的其余部分进行交互。

    如果您不处理这些事件,pygame.key.get_pressed() 将停止工作。 pygame.key.get_pressed() 返回的键的状态在处理事件时在内部进行评估。

    至少你得打电话给pygame.event.pump()

    while run==True:
        pygame.time.delay(16)
        pygame.event.pump()
    
        keys=pygame.key.get_pressed()
        if keys[pygame.K_q]:
            run=False
    
        win.fill((125,125,125))
        pygame.display.update()
    

    【讨论】:

    • 因此,只需将一个字符串添加到代码中(例如)a=pygame.event.get()(甚至在代码中未使用)即可使所有内容正常工作。谢谢回答!
    猜你喜欢
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2011-09-07
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多