如何;回声整个" goto"部分

时间:2014-04-10 23:11:24

标签: variables batch-file goto

我正在为一些朋友制作一个基于文本的冒险游戏,我要批量处理。我想选择让所有变量在需要时回显。以下是输入代码。第一部分,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.

然而,这种方法的问题是,一旦在统计数据中,我无法跳到上一节。这需要我为我创建的每个可能部分建立一个退出网关。所以问题是: 我可以在不离开当前部分的情况下回显一系列变量吗?

3 个答案:

答案 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

会恢复它们。