Batch file 批次设置/a“;“失踪操作员”;
为什么当我在游戏中这么做的时候它会起作用Batch file 批次设置/a“;“失踪操作员”;,batch-file,Batch File,为什么当我在游戏中这么做的时候它会起作用 set /a Monster=%random% * 2 / 32768 + 1 但是这个没有 (注:MHP=10,损伤处理=5) 当我运行第二个时,它显示“缺少操作员”。 但是如果我运行两次,它只会显示一次 这里有一个更大的讽刺: :FightExplora if %HP%=<0 goto GAMEOVERExplora if %MHP%=<0 goto FightEndExplora cls echo HP: %HP%/%MaxHP%
set /a Monster=%random% * 2 / 32768 + 1
但是这个没有
(注:MHP=10,损伤处理=5)
当我运行第二个时,它显示“缺少操作员”。
但是如果我运行两次,它只会显示一次
这里有一个更大的讽刺:
:FightExplora
if %HP%=<0 goto GAMEOVERExplora
if %MHP%=<0 goto FightEndExplora
cls
echo HP: %HP%/%MaxHP% Str: %Strength% XP:%XP%/%LVUP% LV: %LV%
$%Money%
echo.
echo You encountered a %Monster%!
echo Monster -- HP: %MHP%/%MaxMHP% Str: %MonsterSTR%
echo.
echo [1-Attack] [2-Heal]
set /p Action="What will you do? > "
echo.
if %Action%==1 (
set /a DamageDealt=%random% * %Strength% / 32768 + 1
set /a MHP=%MHP% - %DamageDealt%
echo You did %DamageDealt% to the %Monster%
goto EnemyTurnExplora
)
if %Action%==2 (
set /a HealAMT=%random% * %MaxHP% / 32768 + (%MaxHP% / %Strength%)
set HP=%HealAMT%
if %HP% => %MaxHP% set %HP%=%MaxHP%
echo You healed %HealAMT% HP
goto EnemyTurnExplora
)
:EnemyTurnExplora
echo.
pause >nul
::Enemy Damage
echo.
set /a DamageTaken=%random% * %MonsterSTR% / 32768 + 1
set /a HP=%HP% - %DamageTaken%
echo The %Monster% dealt %DamageTaken% to you.
echo.
pause >nul
goto FightExplora
:FightExplora
如果%HP%=%MaxHP%设置为%HP%=%MaxHP%
回声你治愈了%HealAMT%HP
去Enemyturna
)
:Enemyturna
回声。
暂停>nul
::敌人的损失
回声。
set/a damagetake=%random%*%MonsterSTR%/32768+1
设置/a HP=%HP%-%DamageTake%
回显%Monster%对你造成的%DamageTake%。
回声。
暂停>nul
goto FightExplora
另外,当您说要修复时,命令窗口将关闭,我不知道为什么…不要使用
%Variable%
语法在算术表达式中展开环境变量,因为当引用的环境变量在同一命令块中定义或修改时,这在命令块中不起作用。还使用引用语法延迟了扩展!变数算术表达式中不需要代码>
在命令提示窗口中运行set/?
,仔细阅读解释算术表达式和延迟展开的输出帮助。正如您在学习帮助时所读到的,您可以简单地使用:
set /A MHP-=DamageDealt
表达式中的任何非数字字符串都被视为环境变量名称,其值在使用之前会转换为数字。如果指定了环境变量名称,但未在当前环境中定义,则使用零值。这允许您对环境变量值进行算术运算,而不必键入所有这些%符号来获取它们的值
使用时出错的原因:
set /a MHP=%MHP% - %DamageDealt%
展开环境变量时未定义环境变量MHP
或damagedeposed
,或两者都未定义,结果是执行以下3个命令行之一:
set /a MHP= - 50
set /a MHP= 200 -
set /a MHP= -
使用以下工具时不会出现这种情况:
set /A MHP=MHP - DamageDealt
set /A MHP-=DamageDealt
如果在表达式求值时引用的环境变量根本不存在,则等号右侧的每个环境变量名称将替换为0。请勿使用%variable%
语法在算术表达式中展开环境变量,因为当引用的环境变量在同一命令块中定义或修改。还使用引用语法延迟了扩展!变数算术表达式中不需要代码>
在命令提示窗口中运行set/?
,仔细阅读解释算术表达式和延迟展开的输出帮助。正如您在学习帮助时所读到的,您可以简单地使用:
set /A MHP-=DamageDealt
表达式中的任何非数字字符串都被视为环境变量名称,其值在使用之前会转换为数字。如果指定了环境变量名称,但未在当前环境中定义,则使用零值。这允许您对环境变量值进行算术运算,而不必键入所有这些%符号来获取它们的值
使用时出错的原因:
set /a MHP=%MHP% - %DamageDealt%
展开环境变量时未定义环境变量MHP
或damagedeposed
,或两者都未定义,结果是执行以下3个命令行之一:
set /a MHP= - 50
set /a MHP= 200 -
set /a MHP= -
使用以下工具时不会出现这种情况:
set /A MHP=MHP - DamageDealt
set /A MHP-=DamageDealt
如果在表达式求值时引用的环境变量根本不存在,则等号右侧的每个环境变量名称都将替换为0。这对我适用,但如果您拼错了其中一个变量名称,则可能会收到此消息。请记住,set
命令的=
周围不能有空格。这是否在括号内?你可能需要延迟扩展。我又做了一次,它说“缺少操作数”。。。这是什么意思?编辑:突然之间。。。它又开始工作了。。。Wierd.您的代码段有很多问题,主要是您以前应该使用SetLocal enabledayedexpansion
启用延迟扩展,并在中引用%damagedealed%
和%HealAMT%
作为块!破坏代码>和!希拉姆特代码>分别为。另外,请尝试使用GEQ和LEQ,而不是不正确的=>
和=这对我来说很有效,但是如果您拼错了其中一个变量名,则可能会收到此消息。请记住,set
命令的=
周围不能有空格。这是否在括号内?你可能需要延迟扩展。我又做了一次,它说“缺少操作数”。。。这是什么意思?编辑:突然之间。。。它又开始工作了。。。Wierd.您的代码段有很多问题,主要是您以前应该使用SetLocal enabledayedexpansion
启用延迟扩展,并在中引用%damagedealed%
和%HealAMT%
作为块!破坏代码>和!希拉姆特代码>分别为。还可以尝试使用GEQ和LEQ,而不是不正确的=>
和=