我正在製作一個小腳本,將角色分配爲一種應用程序。它要求的人數,然後隨機運行,看看你是什麼角色。 像這樣:使用隨機設置值並防止再次給出值?
:mrole
set/a player1=%random% * 4/32768 + 1
if %player1%==1 set 1role=Murderer
但如果我只希望人們一定比例獲得了一定的作用是什麼?說1:4是兇手。如果我爲8名球員做這樣的事情,如果他們中有6人是殺人犯呢?如果我想再次遇到8人的偵探角色呢?目前我所買的是29行!有沒有比檢查是否有太多時間更快的方法?而偵探檢查也將會很長!
我有這麼遠低於這裏是一個鏈接:http://pastebin.com/g2GfN7v9
@echo off
:new
set test=2
:main
cls
echo Trouble in Murder Town
echo --------------------------
echo.
echo 1. Start
echo 2. Tester Options
echo 3. Quit
echo.
set/p m=
if %m%==1 goto start
if %m%==2 goto testrat
if %m%==3 exit
goto main
:testrat
cls
echo Chance to have a tester
echo -----------------------
echo Currently a 1 in %test% chance to have a tester in a game
echo.
echo 1. Always
echo 2. Never
echo 3. 1/2 (default)
echo 4. 1/3
echo 5. 1/4
echo 6. 1/5
echo 7. Back
echo.
set/p t=
if %t%==1 set test=1
if %t%==2 set test=0
if %t%==3 set test=2
if %t%==4 set test=3
if %t%==5 set test=4
if %t%==6 set test=5
if %t%==7 goto options
goto testrat
:start
cls
echo How many players not including the one at the computer?
echo.
echo 1. 3
echo 2. 4
echo 3. 5
echo 4. 6
echo 5. 7
echo 6. 8
echo 7. Quit
echo.
set/p t=
if %t%==1 set players=3
if %t%==2 set players=4
if %t%==3 set players=5
if %t%==4 set players=6
if %t%==5 set players=7
if %t%==6 set players=8
if %t%==1 goto names
if %t%==2 goto names
if %t%==3 goto names
if %t%==4 goto names
if %t%==5 goto names
if %t%==6 goto names
if %t%==7 goto main
goto start
:names
cls
echo Please enter their names.
echo.
set/p player1=Player 1:
echo.
set/p player2=Player 2:
echo.
set/p player3=Player 3:
echo.
if %players%==8 (
set/p player4=Player 4:
echo.
set/p player5=Player 5:
echo.
set/p player6=Player 6:
echo.
set/p player7=Player 7:
echo.
set/p player8=Player 8:
goto role
) else if %players%==7 (
set/p player4=Player 4:
echo.
set/p player5=Player 5:
echo.
set/p player6=Player 6:
echo.
set/p player7=Player 7:
goto role
) else if %players%==6 (
set/p player4=Player 4:
echo.
set/p player5=Player 5:
echo.
set/p player6=Player 6:
goto role
) else if %players%==5 (
set/p player4=Player 4:
echo.
set/p player5=Player 5:
goto role
) else if %players%==4 (
set/p player4=Player 4:
goto role
) else goto role
:role
set 1role=0
set 2role=0
set 3role=0
set 4role=0
set 5role=0
set 6role=0
set 7role=0
set 8role=0
set murderers=0
set detectives=0
goto mrole
:mrole
set/a player1=%random% * 4/32768 + 1
if %player1%==1 set 1role=Murderer
if %player1%==1 set/a murderers=%murderers% + 1
if %player1%==1 set mcheck=y
if %player1% neq 1 set mcheck=n
if %mcheck%==y if %players% lss 8 goto drole
set/a player2=%random% * 4/32768 + 1
if %murderers%==1 if %players%==8 if %player2%==1 set 2role=Murderer
if %mcheck%==y if %players% lss 8 goto drole
set/a player3=%random% * 4/32768 + 1
if %murderers%==1 if %players%==8 if %player3%==1 set 3role=Murderer
if %mcheck%==y if %players% lss 8 goto drole
set/a player4=%random% * 4/32768 + 1
if %mcheck%==y if %players% lss 8 goto drole
if %murderers%==1 if %players%==8 if %player4%==1 set 4role=Murderer
set/a player5=%random% * 4/32768 + 1
if %mcheck%==y if %players% lss 8 goto drole
if %murderers%==1 if %players%==8 if %player5%==1 set 5role=Murderer
set/a player6=%random% * 4/32768 + 1
if %mcheck%==y if %players% lss 8 goto drole
if %murderers%==1 if %players%==8 if %player6%==1 set 6role=Murderer
set/a player7=%random% * 4/32768 + 1
if %mcheck%==y if %players% lss 8 goto drole
if %murderers%==1 if %players%==8 if %player7%==1 set 7role=Murderer
set/a player8=%random% * 4/32768 + 1
if %mcheck%==y if %players% lss 8 goto drole
if %murderers%==1 if %players%==8 if %player8%==1 set 8role=Murderer
if %murderers% lss 1 goto mrole
if %players%==8 if %murderers% lss 2 goto mrole
:drole
if %players%==8 (
) else if %players lss 8 goto irole
:irole
if 1role==0 set 1role=Innocent
if 2role==0 set 2role=Innocent
if 3role==0 set 3role=Innocent
if 4role==0 set 4role=Innocent
if 5role==0 set 5role=Innocent
if 6role==0 set 6role=Innocent
if 7role==0 set 7role=Innocent
if 8role==0 set 8role=Innocent