プログラミングを学び始めたばかりの方にとって、実際に動くプログラムを作ることは大きなモチベーションになります。
本記事では、Windows標準で利用できるスクリプト言語「VBScript」を使って、サイコロを振るプログラムを作成します。
乱数の扱い方やメッセージボックスの表示方法など、VBScriptの基本を学びながら、楽しいサイコロプログラムを完成させましょう。
サイコロプログラムの全体像
サイコロを作るには、主に以下のステップで進めます。
- 乱数を生成する
- 1~6の範囲に丸める
- 結果をユーザーに見せる
VBScriptでは Randomize と Int(Rnd * 6) + 1 を使って乱数を生成します。これらを組み合わせ、メッセージボックスで結果を表示するのが基本形です。
サンプルコード
以下がサイコロプログラムのサンプルコードです。ファイル名は dice.vbs として保存してください。
' dice.vbs - サイコロを振るプログラム
' 乱数シードを初期化
Randomize
' Rnd関数で0以上1未満の乱数を生成し、1~6に変換
Dim result
result = Int(Rnd * 6) + 1
' メッセージボックスで結果を表示
MsgBox "サイコロの目は " & result & " です!", vbInformation, "VBScript サイコロ"
コードの解説
- Randomize
乱数の種(シード)を現在時刻などから初期化し、毎回異なる乱数列を生成できるようにします。 - Rnd
0以上1未満の少数乱数を返します。 - Int(Rnd * 6) + 1
Rnd * 6 で 0~5.999… の乱数を生成し、Int 関数で小数点以下を切り捨てることで 0~5 の整数にします。最後に +1 することで 1~6 の範囲に調整します。 - MsgBox
メッセージボックスを表示する関数です。第一引数が表示テキスト、第二引数がアイコンやボタンのスタイル、第三引数がウィンドウタイトルを指定します。
プログラムの実行方法
- メモ帳などのテキストエディタを開く
- 上記のコードを貼り付け、dice.vbs という名前で保存
- ファイルをダブルクリックするとサイコロの目が表示される
これだけで動作するので、ぜひ試してみてください。
カスタマイズ例
- 連続で振る
ループ処理を使って複数回振ることができます。 - 合計を表示
複数回振った結果の合計値を計算して表示することで、ボードゲームのサポートツールになります。 - GUIの改良
Internet Explorerのオブジェクトを使い、HTMLベースのダイアログで表示をおしゃれにすることも可能です。
演習問題
以下の演習問題にチャレンジして、学んだ内容を定着させましょう。
- 連続で10回サイコロを振り、すべての目をメッセージボックスで表示するプログラムを作成してください。
- サイコロを振った結果が「6」のときだけ「おめでとう!」と別のメッセージを表示するように改良してください。
- 5回サイコロを振った後、出た目の合計値をメッセージボックスで表示するプログラムを作成してください。
- 振る回数をユーザー入力(InputBox)で受け取り、その回数だけサイコロを振って結果を表示するプログラムを作成してください。
解答例
問1 解答例
Randomize
Dim i, result
For i = 1 To 10
result = Int(Rnd * 6) + 1
MsgBox "サイコロの目 (" & i & "回目): " & result
Next
問2 解答例
Randomize
Dim result
result = Int(Rnd * 6) + 1
If result = 6 Then
MsgBox "おめでとう!サイコロの目は 6 です!"
Else
MsgBox "サイコロの目は " & result & " です。"
End If
問3 解答例
Randomize
Dim i, result, sum
sum = 0
For i = 1 To 5
result = Int(Rnd * 6) + 1
sum = sum + result
Next
MsgBox "5回振った合計は " & sum & " です。"
問4 解答例
Randomize
Dim times, i, result
times = InputBox("何回サイコロを振りますか?", "回数入力", 5)
If Not IsNumeric(times) Or times < 1 Then
MsgBox "正しい回数を入力してください。"
WScript.Quit
End If
For i = 1 To CInt(times)
result = Int(Rnd * 6) + 1
MsgBox i & "回目の目: " & result
Next
まとめ
本記事では、VBScriptを使ってサイコロを振るプログラムを作成しました。
乱数生成の仕組みやメッセージボックスの使い方、ループや条件分岐など、プログラミングの基礎要素を押さえることができたと思います。
演習問題にも挑戦して、ぜひ自分なりの改良を加えてみてください。VBScriptは手軽に試せる言語ですので、他のアイデアもどんどん形にしてみましょう!