我跑进一个游戏,我正在做一个错误,就会通过这个命令行造成的:为什么随机数始终为50,但在批处理脚本中它应该介于0和5之间?
set mdmg=%rdm% %%5 +1
结果总是50,但它意味着是0到5 Rdm
为%random%
由办法。
这是怎么发生的?
这里是它在运行块:
REM////////////////BATTLE\\\\\\\\\\\\\\\\\\
:prebattle
setlocal enabledelayedexpansion
set rdm=%random%
if "!weapon!" EQU "1" (
set /a pdmg=!rdm! %%25 +1
)
if "!armor!" EQU "1" (
set /a php=100
)
set mhp=50
set mdmg=!rdm! %%5 +1
set /p %c%=user
if %c% EQU 1 (
echo !mhp!
)
if %c% EQU 2 (
echo !mdmg!
)
if %c% EQU 3 (
echo !mlvl!
)
pause
if "!lvl!" EQU "1" if "!lvl!" LEQ "5" (
set /a enemyno=!rdm! %%3 +1
set /a mhp+=!rdm! %%20 +1
set /a mdmg+=!rdm! %%20 +1
set /a mlvl=!rdm! %%5 +1
)
set /p %c%=user
if %c% EQU 1 (
echo !mhp!
)
if %c% EQU 2 (
echo !mdmg!
)
if %c% EQU 3 (
echo !mlvl!
)
pause
if "!lvl!" GEQ "6" if "!lvl!" LEQ "10" (
set /a enemyno=!rdm! %%6 +1
set /a mhp+=!rdm! %%20 +1
set /a mdmg+=!rdm! %%15 +1
set /a mlvl=!rdm! %%10 +1
)
if "!lvl!" GEQ "11" if "!lvl!" LEQ "15" (
set /a enemyno=!rdm! %%9 +1
set /a mhp+=!rdm! %%20 +1
set /a mdmg+=!rdm! %%15 +1
set /a mlvl=!rdm! %%16 +1
)
if "!lvl!" GEQ "16" if "!lvl!" LEQ "20" (
set /a enemyno=!rdm! %%12 +1
set /a mhp+=!rdm! %%20 +1
set /a mdmg+=!rdm! %%15 +1
set /a mlvl=!rdm! %%22 +1
)
if "!lvl!" GEQ "21" if "!lvl!" LEQ "25" (
set /a enemyno=!rdm! %%15 +1
set /a mhp+=!rdm! %%20 +1
set /a mdmg+=!rdm! %%15 +1
set /a mlvl=!rdm! %%30 +1
)
if "!lvl!" GEQ "26" if "!lvl!" LEQ "30" (
set /a enemyno=!rdm! %%18 +1
set /a mhp+=!rdm! %%20 +1
set /a mdmg+=!rdm! %%15 +1
set /a mlvl=!rdm! %%35 +1
)
set /p %c%=user
if %c% EQU 1 (
echo !mhp!
)
if %c% EQU 2 (
echo !mdmg!
)
if %c% EQU 3 (
echo !mlvl!
)
pause
if "!enemyno!" EQU "1" goto enemy1
if "!enemyno!" EQU "2" goto enemy2
if "!enemyno!" EQU "3" goto enemy3
if "!enemyno!" EQU "4" goto enemy4
if "!enemyno!" EQU "5" goto enemy5
if "!enemyno!" EQU "6" goto enemy6
if "!enemyno!" EQU "7" goto enemy7
if "!enemyno!" EQU "8" goto enemy8
if "!enemyno!" EQU "9" goto enemy9
if "!enemyno!" EQU "10" goto enemy10
if "!enemyno!" EQU "11" goto enemy11
if "!enemyno!" EQU "12" goto enemy12
if "!enemyno!" EQU "13" goto enemy13
if "!enemyno!" EQU "14" goto enemy14
if "!enemyno!" EQU "15" goto enemy15
if "!enemyno!" EQU "16" goto enemy16
if "!enemyno!" EQU "17" goto enemy17
if "!enemyno!" EQU "18" goto enemy18
if "!enemyno!" EQU "19" goto enemy19
if "!enemyno!" EQU "20" goto enemy20
if "!enemyno!" EQU "21" goto enemy21
if "!enemyno!" EQU "22" goto enemy22
if "!enemyno!" EQU "23" goto enemy23
if "!enemyno!" EQU "24" goto enemy24
if "!enemyno!" EQU "25" goto enemy25
if "!enemyno!" EQU "26" goto enemy26
if "!enemyno!" EQU "27" goto enemy27
if "!enemyno!" EQU "28" goto enemy28
if "!enemyno!" EQU "29" goto enemy29
if "!enemyno!" EQU "30" goto enemy30
goto prebattle
通常,我会要求查看更多的代码,因为如果没有看到更多的代码,就不可能确定是什么问题。这就是说,我几乎可以保证它是你的结果[不使用延迟扩展](http://stackoverflow.com/questions/9681863/windows-batch-variables-wont-set)。但是,由于您缺乏[最小,完整和可验证的示例](http://stackoverflow.com/help/mcve),因此我会投票结束。 – SomethingDark
我有 – Yoshirou
setlocal enabledelayedexpansion是的,你需要使用'!rdm!'而不是'%rdm%'。尝试实际阅读链接。 – SomethingDark