所以我尝试编写一个简单的程序,这样我就可以模拟 D20 掷骰子并发送消息(Getroffen),如果掷出的数字介于 10 和 15 之间。但是当数字大于 15 时,它只会给我一个“Daneben”。当数字小于 10 时,我也想得到一个“Daneben”,但事实并非如此。我应该怎么做?
@echo off
:run
cls
echo Zahl zwischen 1 und 20
call :roll20
set zahl=%roll%
echo %zahl%
if %zahl% GEQ 10 if %zahl% LEQ 15 (echo Getroffen) ELSE (echo Daneben)
pause >NUL
goto run
:roll20
set roll=%random%
if %roll% GTR 20 goto roll20
if %roll% LSS 1 goto roll20
答案1
您仅测试zahl
超过 9,否则将不会获得输出。
if %zahl% GEQ 10 if %zahl% LEQ 15 (echo Getroffen) ELSE (echo Daneben)
最简单的解决方案是使用多个测试:
:: values under 10
if %zahl% LSS 10 echo Daneben
:: values 10 and over but under 15
if %zahl% GEQ 10 if %zahl% LEQ 15 echo Getroffen
:: values over 15
if %zahl% GTR 15 echo Daneben
您还应该更改您的随机器以使用这个:
SET /a roll=(%RANDOM%*20/32768)+1
这会对结果执行一些数学运算,%RANDOM%
以确保输出值始终在 1 到 20 之间。