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

我正在为我的游戏制作一个开始菜单,但是当我点击我在开始菜单中制作的退出按钮时,它没有退出。我的代码有什么问题吗?


我尝试为退出创建一个函数,将其放入使用窗口退出按钮退出游戏的代码中,但没有任何效果。


import pygame

import os

pygame.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 = 60

white = (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 = 235

y1 = 3000




cnt = 0

playing = True

while 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


我希望它退出窗口,但它什么也不做。


慕尼黑的夜晚无繁华
浏览 149回答 1
1回答

侃侃无极

只要playing是,主循环就会运行True。playing = Truewhile 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))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python