我正在为我的游戏制作一个开始菜单,但是当我点击我在开始菜单中制作的退出按钮时,它没有退出。我的代码有什么问题吗?我尝试为退出创建一个函数,将其放入使用窗口退出按钮退出游戏的代码中,但没有任何效果。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))
添加回答
举报
0/150
提交
取消