You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame主菜单选中start按回车后fade等函数无法运行问题排查

问题原因
  • fade函数中black_screen()被错误放在透明度循环内部,第一次循环执行时就会直接跳转,不会完成完整的渐隐动画。
  • 函数调用逻辑存在递归死循环:main_menu() → fade() → black_screen() → game() → main_menu(),执行流直接跳回主菜单,视觉上表现为fade等函数未运行。
  • game()函数开头错误调用了main_menu(),导致进入游戏逻辑前就被强制切回主菜单。
  • 额外隐患1:fade函数内的渐变表面变量名和函数名重名,会造成命名覆盖,可能引发未知异常。
  • 额外隐患2:black_screen函数仅创建了黑屏表面,没有将表面绘制到屏幕上就执行更新,黑屏效果根本不会生效。
修复代码

修正fade函数

将black_screen()调用移到循环外,同时修改变量名避免冲突:

def fade(): 
    global width, height
    fade_surface = pygame.Surface((width,height))
    fade_surface.fill((0,0,0))
    for alpha in range(0, 300):
        fade_surface.set_alpha(alpha)
        screen.blit(fade_surface, (0,0))
        pygame.display.update()
        pygame.time.delay(6)
    black_screen()

修正black_screen函数

补全绘制逻辑,可根据需求调整黑屏停留时长:

def black_screen():
    blacc = pygame.Surface((width,height))
    blacc.fill((0,0,0))
    screen.blit(blacc, (0,0))
    pygame.display.update()
    pygame.time.delay(1000) # 此处改为停留1秒,可自行调整
    game()

修正game函数

删除开头的主菜单调用,可选增加帧率控制避免游戏运行过快:

def game():
    run = True
    while run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()

        screen.fill((0,255,0))
        pygame.display.update()
        clock.tick(FPS)

内容的提问来源于stack exchange,提问作者sejungoamare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:45:03