我正在为一些朋友制作一个基于文本的冒险游戏,我要批量处理。我想选择让所有变量在需要时回显。以下是输入代码。第一部分,Variables,不是一个被访问的部分,但在游戏开始之前创建变量。第二部分,统计数据,提供了这些变量。
@ECHO OFF
::Variables
set Name=Und
set Gender=Und
set Age=Und
set Gold=0
set Hunger=Satisfied
set Illness=None
set Wounds=None
set CHP=10
set MHP=10
set CMP=0
set MMP=0
goto Start
::Stats
:Stats
cls
echo Name: %Name%
echo Gender: %Gender%
echo Age: %Age%
echo Gold: 0
echo.
echo Health
echo Hunger: %Hunger%
echo Illness: %Illness%
echo Wounds: %Wounds%
echo.
echo Stats
echo HP: %CHP%/%MHP%
echo MP: %CMP%/%MMP%
我目前解决此问题的方法是使用
set /p "situation"= :
if "%situation%"=="1" goto nextpart
if "%situation%"=="2" goto nextpart
if "%situation%"=="3" goto nextpart
if "%situation%"=="Stats" goto Stats.
然而,这种方法的问题是,一旦在统计数据中,我无法跳到上一节。这需要我为我创建的每个可能部分建立一个退出网关。所以问题是: 我可以在不离开当前部分的情况下回显一系列变量吗?
答案 0 :(得分:0)
您可以使用Call:stats
代替goto:stats
。
像这样它将在当前部分回来
编辑:
@echo off
set $var=1000
call:aff
echo done
exit/b
:aff
echo %$var%
答案 1 :(得分:0)
你可以获得Lua here
这是一本有点过时版本的Lua书here.
这是一个如何在Lua中写这个的例子:
-- create a bunch of variables
Name = nil
Gender = nil
Age = nil
Gold = 0
Hunger = 'Satisfied'
Illness = 'None'
Wounds = 'None'
CHP = 10
MHP = 10
CMP = 0
MMP = 0
-- create a routine whose job it is to print the variables
function stats()
print(' Name: ' .. Name )
print('Gender: ' .. Gender )
print(' Age: ' .. Age )
print(' Gold: ' .. Gold )
print('Health' )
print(' Hunger: ' .. Hunger )
print('Illness: ' .. Illness )
print(' Wounds: ' .. Wounds )
print('' )
print('Stats' )
print(' HP: ' .. CHP .. '/' .. MHP )
print(' MP: ' .. CMP .. '/' .. MMP )
end
-- call the routine
stats()
这看起来比你的BAT代码更详细,但是一旦你的游戏逻辑开始变得复杂,使用真正的编程语言将使和更容易获得更多回报。
答案 2 :(得分:0)
批量安排保存/恢复机制的简便方法是为要保存/恢复的变量保留前缀。例如,如果您要为感兴趣的变量保留$
,那么
set $>savefile
您需要将所有$
个变量保存到文件中
for /f "delims=" %%a in (savefile) do set %%a
会恢复它们。