批处理游戏活动功能异常:执行后续活动仍显示前一个活动
问题修复方案
你的批处理游戏活动系统出现的问题,核心原因是重复定义活动标签以及错误的跳转目标:
- 代码在
:save标签之后重复定义了所有活动标签(:a_activity到:j_activity),批处理的标签查找逻辑可能导致执行时跳转到错误的标签位置 - 重复的活动标签中使用了
goto activities,但不存在:activities标签,执行后会终止跳转,屏幕内容无法刷新,从而显示上一次的活动内容 - 另外还有几处错误的跳转目标需要修正
修复步骤:
- 删除
:save标签之后重复的所有活动标签(从:a_activity到:j_activity的第二组定义) - 修正
:the_activities中的错误跳转:将if "%errorlevel%" equ "255" goto activities改为if "%errorlevel%" equ "255" goto the_activities - 修正
:save中的错误跳转:将goto continue1改为goto continue
修复后的核心代码片段:
:the_activities cls title Activities - %charactername% echo. echo. echo. call :echo-align center "Activities" call :echo-align center "[1] Take a walk" call :echo-align center "[2] Meditate" call :echo-align center "[3] Sleep" call :echo-align center "[4] Sing a song" call :echo-align center "[5] Dance" call :echo-align center "[6] Eat" call :echo-align center "[7] Drink" call :echo-align center "[8] Hike" call :echo-align center "[9] Play football" choice /c 123456789 if "%errorlevel%" equ "255" goto the_activities if "%errorlevel%" equ "9" goto j_activity if "%errorlevel%" equ "8" goto i_activity if "%errorlevel%" equ "7" goto g_activity if "%errorlevel%" equ "6" goto f_activity if "%errorlevel%" equ "5" goto e_activity if "%errorlevel%" equ "4" goto d_activity if "%errorlevel%" equ "3" goto c_activity if "%errorlevel%" equ "2" goto b_activity if "%errorlevel%" equ "1" goto a_activity if "%errorlevel%" equ "0" goto the_activities :a_activity echo take a walk pause>nul goto the_activities :b_activity echo meditate pause>nul goto the_activities :c_activity echo sleep pause>nul goto the_activities :d_activity echo sing a song pause>nul goto the_activities :e_activity echo dance pause>nul goto the_activities :f_activity echo eat pause>nul goto the_activities :g_activity echo drink pause>nul goto the_activities :h_activity echo bike pause>nul goto the_activities :i_activity echo hike pause>nul goto the_activities :j_activity echo play football pause>nul goto the_activities :save cls title Save Life set "characterage=%charage%" echo %charactername% > %charactername%.savefile echo %chosecountry% >> %charactername%.savefile echo %charage% >> %charactername%.savefile timeout /t 3 /nobreak > nul echo Saved echo Do you want to continue with your life choice /c:YN if "%errorlevel%" equ "255" goto save if "%errorlevel%" equ "2" exit if "%errorlevel%" equ "1" goto continue if "%errorlevel%" equ "0" goto save
修复说明:
删除重复标签后,每个活动执行完毕都会正确跳转到:the_activities,该标签开头的cls会清空屏幕,重新显示活动菜单,不会残留上一次的活动内容;修正所有错误的跳转目标后,流程逻辑会完全符合预期。
内容的提问来源于stack exchange,提问作者Legitz
相关产品推荐
相关产品推荐

