поэтому я попытался создать простую программу, чтобы я мог смоделировать бросок игральных костей D20 и отправить сообщение (Getroffen), если число бросков составляет от 10 до 15. Но это просто дает мне "Данебен", когда число больше 15. Я хотел бы получить "Daneben", когда он меньше 10, но это не так. Что мне делать вместо этого?

 @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 ответ1

0

Вы тестируете только на 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .