satou_gogoもしくはジョンドゥのブログ

気になることを気の向くまま書き連ねている場所

vbsで作った抽選もどき

先日ツイッターの方で貼ったvbsで作った抽選もどきです

 

使い方

下のプログラムをメモ帳とかにコピーする

拡張子を.vbsに書き換える

このスクリプトと同じ階層にinputText.txtとoutputText.txtを用意する

(相対パス絶対パスに書き換えてくださればどこの階層に置こうと自由です)

作ったvbsを実行する

以上

 

inputText.txtの記載方法

キャラ名,palno,設定(必要数を:で区切る 設定がない場合はなしと記載してください)

(例)

カンフーマン,12,AI1:AI2:AI3:AI4:AI5:AI6

絶望ちゃん,12,なし

FSくん,6,なし

 

outputText.txtの出力される情報

キャラ:カンフーマン

カラー:12p

設定:AI2

以下はプログラムです

 

Option Explicit
Randomize

Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim inputFile,outputFile
Set inputFile = fso.OpenTextFile("inputText.txt", 1, False, 0)'読み込みテキスト(相対パス)
Set outputFile = fso.OpenTextFile("outputText.txt", 2, True)'書き出しテキスト(相対パス)

 
Dim arr(),count
count=0'配列の要素数取得用
ReDim arr(count)


Dim allconfig,aryStrings


Do Until inputFile.AtEndOfStream
Dim lineStr
lineStr = inputFile.ReadLine'読み込みテキスト1行取得
count=count+1
ReDim Preserve arr(count)
arr(count)=lineStr'配列に読み込みテキストを1行格納
Loop

 

Dim intValue, intUpper
intUpper = count'配列の要素数
intValue = Int((intUpper) * Rnd + 1)'配列の要素数を上限に乱数を生成
aryStrings = Split(arr(intValue), ",")',(カンマ)で区切られている部分を配列に各々格納

 

Dim intpalno
intUpper = aryStrings(1)'palno部分に記載されている数字
intpalno = Int((intUpper) * Rnd + 1)'palno部分に記載されている数字を上限に乱数生成
allconfig=Split(aryStrings(2), ":")'設定の部分で:(コロン)で区切られている部分を配列に各々格納


Dim intconfig
intUpper = (UBound(allconfig))+1'設定の配列の要素数+1
intconfig = Int((intUpper) * Rnd)'設定の配列の要素数+1を上限に乱数生成

 

outputFile.WriteLine "キャラ:"&aryStrings(0)
outputFile.WriteLine "カラー:"&intpalno&"p"
if(aryStrings(2)<>"なし")then
outputFile.WriteLine "設定:"&allconfig(intconfig)
end if