Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 正在获取批处理文件以显示除0以外的数字_Windows_Batch File - Fatal编程技术网

Windows 正在获取批处理文件以显示除0以外的数字

Windows 正在获取批处理文件以显示除0以外的数字,windows,batch-file,Windows,Batch File,尽管批处理文件现在显示了正确的损坏数字,但无论发生什么情况,它都只显示0。它似乎只生成0作为其编号 还有,第二个问题,如果我能解决这个问题,我应该把代码放在哪里,怎样说你已经丢失了!或者你已经赢了,这取决于你的生命值/怪物的生命值是否降到0以下 以下是新代码: @echo off set phealth=20 set shealth=50 set pdamage=0 set sdamage=0 :start cls echo =================== echo Your HP:

尽管批处理文件现在显示了正确的损坏数字,但无论发生什么情况,它都只显示0。它似乎只生成0作为其编号

还有,第二个问题,如果我能解决这个问题,我应该把代码放在哪里,怎样说你已经丢失了!或者你已经赢了,这取决于你的生命值/怪物的生命值是否降到0以下

以下是新代码:

@echo off
set phealth=20
set shealth=50
set pdamage=0
set sdamage=0
:start
cls
echo ===================
echo  Your HP:       %phealth% 
echo  Monster HP:    %shealth% 
echo ===================
echo Choices:
echo ===================
echo [1] Strike at the slime
echo [2] Back away
set /p choice=You choose option:
if '%choice%'=='1' goto :choice1
if '%choice%'=='2' goto :choice2
goto start

:choice1
cls
set /a pdamage=(%random% %% 5) + 1
set /a phealth=%phealth%-%pdamage%
set /a sdamage=(%random% %% 8) + 1
set /a shealth=%shealth%-%sdamage%
echo ===================
echo  Your HP:       %phealth% 
echo  Monster HP:    %shealth% 
echo ===================
echo You strike at the slime.
echo The slime strikes you back.
echo You took %pdamage% damage.
echo The slime took %sdamage% damage.
PAUSE
cls
goto start

:choice2
cls
set /a pdamage=(%random% %% 1) + 1
set /a phealth=%phealth%-%pdamage%
echo ===================
echo  Your HP:       %phealth% 
echo  Monster HP:    %shealth% 
echo ===================
echo You back away.
echo The slime strikes at you.
echo You took %pdamage% damage.
echo The slime took 0 damage.
PAUSE
cls
goto start

:end

%随机%%1将始终返回0

直接放在cls后面,如下所示:开始

此外:


如果输入一个带有set/p的字符串,那么输入的数据不包含空格是毫无疑问的。解决这个问题的方法是将比较运算符两侧的字符串用引号括起来,即双引号“不是单引号”

谢谢!不幸的是,即使随机数是%random%%%24000+1,它也会生成0。此外,在执行文件时,赢/输位会导致语法错误。。。不,我为什么要看,因为我确实复制了它们。你没有在某个地方使用random作为变量名,是吗?随机检验
if %shealth% lss 0 echo You won&pause&goto :eof
if %phealth% lss 0 echo You lost&pause&goto :eof