批量骰子游戏

时间:2015-01-15 15:41:33

标签: windows batch-file cmd

我正在批量开发骰子游戏。唯一缺少的是最重要的部分!我无法弄清楚如何制作一个产生1-6之间数字的随机数发生器!有帮助吗?

3 个答案:

答案 0 :(得分:3)

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

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

它使用%random%,它给出一个0到32767之间的随机数,然后使用modulus operator使其范围从0到5.然后添加1来制作1到6。

请注意,这不是完全随机的,但它应该足以满足您的需求。由于32767不能完全被6整除,因此滚动1和2会有一点偏差(但这个小到足以让它不明显)。

答案 1 :(得分:0)

尝试一下,您可以通过添加更好的动画或更多骰子来改进。

@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

答案 2 :(得分:-1)

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

依此类推