批量骰子游戏

Batch Dice Game

我正在 Batch 中开发一个骰子游戏。唯一缺少的是最重要的部分!我不知道如何制作一个生成 1-6 之间数字的随机数生成器!有什么帮助吗?

以下代码会将 %roll% 设置为 1 到 6 之间的随机数,包括在内。

set /a roll=(%random% %% 6) + 1

它使用 %random%, which gives a random number from 0 to 32767, and then uses the modulus operator 使它的范围从 0 到 5。然后添加 1 使这个 1 到 6。

请注意,这不会是完全随机的,但应该足以满足您的需求。由于 32767 不能被 6 完全整除,因此滚动 1 和 2 会有微小的偏差(但这足够小,不会引起注意)。

:random_1
Set /a roll=%random%
If %roll%==gtr goto random_1
If %roll%==lss goto random_1
If %roll%==1 goto next_step

以此类推

试试这个,你可以通过添加更好的动画或更多的骰子来改进。

@echo off&&setlocal enabledelayedexpansion
title Dice or Die
::by BR4Z1L14N N00B
color 0f

:INICIO
::throwing the die
set/a dd=%random% %%6 +1
::------------------------------------------------
::die rolling time |range: 13~26| change down here for longer or shorter roll
set/a mov=%random% %%13 +13
::------------------------------------------------
set movlim=0
set anim=0

::here the die is rolling, then for the up face there's 4 possibillities for the next face
:GIRO
call :loading
set/a movlim=%movlim%+1
    if %movlim% equ %mov% goto FIM
        if %dd% equ 1 set pos0=4&&set pos1=6&&set pos2=2&&set pos3=3&&goto setDD
        if %dd% equ 2 set pos0=1&&set pos1=6&&set pos2=5&&set pos3=3&&goto setDD
        if %dd% equ 3 set pos0=1&&set pos1=2&&set pos2=5&&set pos3=4&&goto setDD
        if %dd% equ 4 set pos0=1&&set pos1=3&&set pos2=5&&set pos3=6&&goto setDD
        if %dd% equ 5 set pos0=4&&set pos1=3&&set pos2=2&&set pos3=6&&goto setDD
        if %dd% equ 6 set pos0=4&&set pos1=5&&set pos2=2&&set pos3=1&&goto setDD

:FIM
cls
echo.
echo/ %dd%
pause>nul
set dd=
set mov=
set xlado=
goto INICIO

:setDD
set/a xlado=%random% %%4
set dd=!pos%xlado%!
goto GIRO

:loading
set load=
set delay=0
set rollx=ó
:loopd
set/a delay=%delay%+1
::------------------------------------------------
::animation speed, |delay 30| change down here to get faster or slower
    if %delay% neq 30 goto loopd
::------------------------------------------------
if %anim% equ 0 set roll=-&&set anim=1&&goto prx
if %anim% equ 1 set roll=\&&set anim=2&&goto prx
if %anim% equ 2 set roll=%rollx:~1,1%&&set anim=3&&goto prx
if %anim% equ 3 set roll=/&&set anim=0&&goto prx
:prx
set load=%load%%roll%
cls
echo.
echo/ %load%
exit/b