4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

バッチファイルで作るクトゥルフキャラクターシート簡易生成機

Last updated at Posted at 2016-08-16

目的

暇つぶしと手抜き

必要な環境

windows

必要な機能

  1. 乱数生成
  2. ダイスロール機能
  3. 出力機能

用意するもの

テキストエディタ
コマンドプロンプト

手順

乱数生成器を用意する

まずは乱数生成を行う必要があるので乱数生成器を作ります
%RANDOM%を使えば取得できますがそのままだと範囲が広いのでファイルで機能を作ってしまいます。

rand.bat

@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と同じ出力が得られるようにします

dice.bat

@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の部分を書き換えましょう

charasheet.bat

@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


完成

これで完成です
あとは作ったファイルすべて同じフォルダに入れておくか
パスが通った場所においておけば使用できます

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?