所以基本上我做了一个批处理文件,好像变量%hp%低于0,结束了。
@echo off
:start
set /a hp=10
if %hp% LEQ 0 goto ded
:choose
cls
echo %hp%
echo Gain or lose health?
echo 1) Gain
echo 2) Lose
set /p loseorgain=Type Answer Here
if %loseorgain%==1 goto gain
if %loseorgain%==2 goto lose
:lose
set /a hp=%hp%-5
echo You lose 5 hp! You have %hp% left!
pause
goto choose
:gain
set /a hp=%hp%+5
echo You gained +5 hp! You have %hp% left!
pause
goto choose
:ded
echo Ur ded
pause
exit
我想要它,以便如果%hp%在批处理文件中随时下降到或低于0 ,它将带您到标签“ded”
相反,一旦它离开:start标签,就会忘记if语句。
简化:我希望if语句在整个批处理文件中生效,无论它在哪个标签上。
有办法做到这一点吗?
答案 0 :(得分:1)
您每次都需要检查%hp%
变量,但是您可以制定一个常见的"程序"去做这个。这个例子应该说明:
@ECHO OFF
SETLOCAL EnableExtensions
SET hp=5
:Loop
SET /A hp-=1
ECHO You have %hp% HP.
CALL :CheckHP
GOTO Loop
:CheckHP
IF %hp% LEQ 0 (
ECHO You are dead.
PAUSE
EXIT
)
ENDLOCAL
因此,每次%hp%
可以递减时,您可以立即添加以下行:CALL :CheckHP
,这会将控件移到"过程"检查该值是否仍然大于0.如果是,控制将返回到发出CALL
命令的脚本部分。
您需要做的只是恰当地放置CALL :CheckHP
行,并在CheckHP
程序中维护所有逻辑。