目的
暇つぶしと手抜き
必要な環境
windows
必要な機能
- 乱数生成
- ダイスロール機能
- 出力機能
用意するもの
テキストエディタ
コマンドプロンプト
手順
乱数生成器を用意する
まずは乱数生成を行う必要があるので乱数生成器を作ります
%RANDOM%を使えば取得できますがそのままだと範囲が広いのでファイルで機能を作ってしまいます。
@echo off
if "%1" == "" (set /a DMINIMUM = 1) else set /a DMINIMUM=%1
if "%2" == "" (set /a DMAXIMUM = 6) else set /a DMAXIMUM=%2
set /a ROLL=(%RANDOM%*(%DMAXIMUM%))/32768+%DMINIMUM%
これでrand.batを呼び出せば乱数が得られます
そのまま呼びだされた場合は1d6を振ったのと同じ出目が得られます
そのまま表示したいのであれば呼び出した後でechoか何かで%ROLL%を呼び出せば値が取得できます
ダイスロール機能を作る
乱数生成器を使ってダイスロール機能を作ります
制限上2d6とかで振れませんがdice 2 6で2d6と同じ出力が得られるようにします
@echo off
if "%1" == "" (set /a LOOP=1) else set /a LOOP=%1
if "%2" == "" (set /a MAX=6) else set /a MAX=%2
if "%3" == "" (set /a ADD=0) else set /a ADD=%3
if not exist rand.bat goto ERROR
set /a SUM=0
set /a REMAIN=%LOOP%
set RESULT=[
:FOREACH
if "%REMAIN%" == "0" goto DISP
if "%LOOP%" NEQ "%REMAIN%" set RESULT=%RESULT%,
call rand.bat 1 %MAX%
set RESULT=%RESULT%%ROLL%
set /a SUM=%SUM%+%ROLL%
set /a REMAIN=%REMAIN%-1
goto FOREACH
:DISP
set RESULT=%RESULT%]
set /a SUM=%SUM%+%ADD%
echo %LOOP%D%MAX%+%ADD% = %SUM%%RESULT%
goto EOF
:ERROR
echo NotFind rand.bat
:EOF
そのまま作った場合rand.batと同じ場所に置かないと動かないのでその辺りは適宜書き換えて下さい
forで書かないのは出目を記録しておきたいからと
可読性のため
出力機能
ここまでくればもうすぐ
ダイスを振ってパラメーターを計算して吐き出しましょう
出力先を変えたり出力ファイル名を変えるならset FNAME=%NAME%.txtの部分を書き換えましょう
@echo off
setlocal
set /p NAME="キャラクター名は?> "
set /p JOB="職業は?> "
@rem ステータス算出
@call dice 3 6 1>nul
set /a STR=%SUM%
@call dice 3 6 1>nul
set /a CON=%SUM%
@call dice 3 6 1>nul
set /a POW=%SUM%
@call dice 3 6 1>nul
set /a DEX=%SUM%
@call dice 3 6 1>nul
set /a APP=%SUM%
@call dice 2 6 1>nul
set /a SIZ=%SUM%+6
@call dice 2 6 1>nul
set /a INT=%SUM%+6
@call dice 3 6 1>nul
set /a EDU=%SUM%+3
set /a IDEA=%INT%*5
set /a LUCK=%POW%*5
set /a KNOW=%EDU%+5
set /a SAN=%POW%*5
set /a HP=(%CON%+%SIZ%)/2
set /a MP=%POW%
set /a DB=%STR%+%SIZ%
if %DB% LSS 57 set BONUS=+2D6
if %DB% LSS 41 set BONUS=+1D6
if %DB% LSS 33 set BONUS=+1D4
if %DB% LSS 25 set BONUS=0
if %DB% LSS 17 set BONUS=-1D4
if %DB% LSS 13 set BONUS=-1D6
set /a JSP=%EDU%*20
set /a PSP=%INT%*20
set FNAME=%NAME%.txt
type nul>%FNAME%
echo ========================================================= >>%FNAME%
echo. >>%FNAME%
echo [NAME] %NAME% >>%FNAME%
echo [JOB] %JOB% >>%FNAME%
echo. >>%FNAME%
echo ========================================================= >>%FNAME%
echo [HP] %HP%/%HP% >>%FNAME%
echo [MP] %MP%/%MP% >>%FNAME%
echo ========================================================= >>%FNAME%
echo [STR] %STR% >>%FNAME%
echo [CON] %CON% >>%FNAME%
echo [POW] %POW% >>%FNAME%
echo [DEX] %DEX% >>%FNAME%
echo [APP] %APP% >>%FNAME%
echo [SIZ] %SIZ% >>%FNAME%
echo [INT] %INT% >>%FNAME%
echo [EDU] %EDU% >>%FNAME%
echo [IDEA] %IDEA% >>%FNAME%
echo [LUCK] %LUCK% >>%FNAME%
echo [KNOW] %KNOW% >>%FNAME%
echo [SAN] %SAN% >>%FNAME%
echo ========================================================= >>%FNAME%
echo [BONUS] %BONUS% >>%FNAME%
echo [JobSkill] %JSP% >>%FNAME%
echo [PrivateSkill] %PSP% >>%FNAME%
echo ========================================================= >>%FNAME%
type %FNAME%
endlocal
完成
これで完成です
あとは作ったファイルすべて同じフォルダに入れておくか
パスが通った場所においておけば使用できます