首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有一个"if“语句在整个文件中被记住

问有一个"if“语句在整个文件中被记住
EN

Stack Overflow用户
提问于 2015-12-09 16:37:18
回答 1查看 23关注 0票数 2

基本上,我创建了一个批处理文件,好像变量%hp%低于0,它就结束了。

代码语言:javascript
复制
@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语句在整个批处理文件中产生效果,不管它在哪个标签上。

有办法这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-09 17:11:45

您每次都需要检查%hp%变量,但是您可以创建一个通用的“过程”来完成这个任务。这个例子应该说明:

代码语言:javascript
复制
@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过程中维护所有的逻辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34184116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档