我对编码很新,而且我被告知要从批处理文件开始。我试图创建一个基于文本的游戏,提示用户在几个选项之间进行选择以完成故事。我已经掌握了基本的想法,但是我在制作菜单时遇到了一些麻烦。我在这里做了一些研究,并搜索过其他网站,但似乎无法对类似问题的一些答案做出正面或反面。大多数答案写出了我认为可行的代码,但我需要知道这些答案背后的原因,而且我还没有找到任何我能理解的答案。
TLDR;我需要为基于文本的游戏制作菜单,允许用户返回他们中断的标签。
到目前为止我所拥有的:
:MainMenu
cls
echo Input Options:
echo.
echo ::1) View Storyline Changes
echo ::2) Restart Test
echo ::3) Resume Test
echo ::4) Help
echo ::5) Quit
echo.
set /p input=Input:
if "%input%" == "1" goto StorylineChanges
if "%input%" == "2" goto Rst
if "%input%" == "3" goto ResumeTest
if "%input%" == "4" goto HelpScrn
if "%input%" == "5" exit
:StorylineChanges
cls
echo Unimportant to test.
echo.
echo Input "m" to go back
echo.
set /p input=Input:
if "%input%" == "m" goto Main Menu
if "%input%" == " " goto WrongInputStorylineChanges
:Rst
cls
goto :StartTest
echo off
:ResumeTest
cls
REM ***THIS IS WHERE I NEED HELP ***
pause >nul
goto StartTest
正如你可能会立即告诉我的那样,我可以掌握基本命令,所以如果你提供答案,请记住这一点。我非常感谢你们给我的任何帮助。非常感谢。
答案 0 :(得分:1)
我无法解开意大利面条代码,但我可举一个例子 详细说明如何回复菜单,如标题所示。
@echo off
:MainMenu
cls
echo Input Options:
echo.
echo ::1) View Storyline Changes
echo ::2) Restart Test
echo ::3) Resume Test
echo ::4) Help
echo ::5) Quit
echo.
set /p input=Input:
if "%input%" == "1" call :StorylineChanges
if "%input%" == "2" call :Rst
if "%input%" == "3" call :ResumeTest
if "%input%" == "4" call :HelpScrn
if "%input%" == "5" exit /b 0
goto :MainMenu
:StorylineChanges
echo Use "goto :eof" to exit script or exit called label.
pause
goto :eof
:Rst
echo Use "exit /b" to exit script or exit called label with a errorlevel.
pause
exit /b 0
:ResumeTest
>&2 echo Exit called label with errorlevel 1. This line is to stderr.
pause
exit /b 1
:HelpScrn
echo Help. Exit with implicit 0.
pause
exit /b
以上使用call
来访问每个标签。退出被叫标签
返回到通话点。菜单处于循环中,因此它保持不变
显示,直到您输入5
退出脚本。
我在标签中添加了暂停功能,因此您可以在clr
之前看到消息
被称为。