为了账号安全,请及时绑定邮箱和手机立即绑定

为什么退出窗口按钮有效,但游戏中的退出按钮无效?

为什么退出窗口按钮有效,但游戏中的退出按钮无效?

慕尼黑的夜晚无繁华 2021-12-16 16:38:51
我正在为我的游戏制作一个开始菜单,但是当我点击我在开始菜单中制作的退出按钮时,它没有退出。我的代码有什么问题吗?我尝试为退出创建一个函数,将其放入使用窗口退出按钮退出游戏的代码中,但没有任何效果。import pygameimport ospygame.mixer.pre_init()pygame.mixer.init(44100, 16, 2, 262144)pygame.init()from pygame.locals import*pygame.mixer.music.load(os.path.join(os.getcwd(), 'Sounds', 'intro.ogg'))pygame.mixer.music.set_volume(0.3)pygame.mixer.music.play(-1)  FPS = 60white = (255,255,255)grey = (128,128,128)black = (0,0,0)red = (255,0,0)orange = (255,128,0)yellow = (255,255,0)green = (0,255,0)Lgreen = (128,255,0)blue = (0,0,255)Lblue = (0,255,255)purple = (255,0,255)pink = (255,0,127)pygame.display.set_caption('Snake Universe')Title = pygame.image.load('Graphics/Title.png')Play = pygame.image.load('Graphics/Play.png')Option = pygame.image.load('Graphics/Option.png')Exit = pygame.image.load('Graphics/Exit.png')LinePX = pygame.image.load('Graphics/LinePX.png')LineO = pygame.image.load('Graphics/LineO.png')clock = pygame.time.Clock()movie = pygame.movie.Movie('Video/bg.mpg')screen = pygame.display.set_mode((1280, 720))bgE = pygame.image.load('Graphics/transparent.png')movie_screen = pygame.Surface(movie.get_size()).convert()movie.set_display(movie_screen)movie.play()y = 235y1 = 3000cnt = 0playing = Truewhile playing:    cnt+=1    if cnt>=1870:        cnt=0        movie.rewind()        movie.play()    for event in pygame.event.get():        if event.type == pygame.KEYDOWN:            if event.key==pygame.K_RETURN:                if y == 426:                    movie.stop()                    playing = False                    pygame.quit()                    quit()                  if event.key == pygame.K_UP:                y += 1                if y == 3236:                    y = 235                    y1 = 3000                if y == 236:                    y = 425                    y1 = 3000                if y == 426:                    y1 =335                    y = 3235我希望它退出窗口,但它什么也不做。
查看完整描述

1 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

只要playing是,主循环就会运行True。


playing = True

while playing:

    # [...]

当pygame.QUIT事件被处理时,主循环条件被playing设置False为失败:


if event.type == pygame.QUIT:

    playing = False

    # [...]

请注意,pygame.quit()不会终止循环,但会取消初始化所有 pygame 模块,如果在应用程序中间完成,这将导致以下异常。


如果您想通过键盘输入键退出应用程序pygame.K_KP_ENTER,您必须在pygame.KEYDOWN处理事件时执行相同的操作:


if event.type == pygame.KEYDOWN:

    if event.key==pygame.K_KP_ENTER:

        playing = False

或者您必须通过以下方式发送pygame.QUIT事件pygame.event.post():


if event.type == pygame.KEYDOWN:

    if event.key==pygame.K_KP_ENTER:

        pygame.event.post(pygame.event.Event(pygame.QUIT))


查看完整回答
反对 回复 2021-12-16
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信