|
|
プログラム例 |
プログラムリスト「サイコロシュミレーション」
'定数の宣言
Private Const Sx As Integer = 100 'サイコロの始点x座標
Private Const Sy As Integer = 100 'サイコロの始点y座標
Private Const Ex As Integer = 1300 'サイコロの終点x座標
Private Const Ey As Integer = 1300 'サイコロの終点y座標
Private Const SLong As Integer = 1200 'サイコロの長さ
Private Const Radius1 As Integer = 250 '円の半径(1のとき)
Private Const Radius6 As Integer = 130 '円の半径(6のとき)
Private Const Radius As Integer = 150 '円の半径(その他)
Private Const White = &HFFFFFF '色の設定 白
Private Const Black = &H0& '色の設定 黒
Private Const Red = &HFF& '色の設定 赤
Private Sub Command1_Click()
'変数の宣言
Dim Num As Integer 'サイコロの目を入れる変数
Dim Num1 As Integer 'サイコロ1のカウンター
Dim Num2 As Integer 'サイコロ2のカウンター
Dim Num3 As Integer 'サイコロ3のカウンター
Dim Num4 As Integer 'サイコロ4のカウンター
Dim Num5 As Integer 'サイコロ5のカウンター
Dim Num6 As Integer 'サイコロ6のカウンター
Dim kaisuu As Integer '振る回数を入れる変数
Dim i As Integer '作業用フラグ
'サイコロを振る回数をkaisuuに入れる
kaisuu = Val(Text1.Text)
'テキストボックスに何も入力してない時
'エラーメッセージを出力
If Text1.Text = "" Then
MsgBox ("ちゃんと入力してください。")
End If
'テキストボックスの入力値が0回の時
'このプロシージャを抜ける
If kaisuu = 0 Then
Exit Sub
End If
'乱数の初期化
Randomize
'繰り返す
For i = 1 To kaisuu Step 1
'サイコロの目は?
Num = Int((6 * Rnd) + 1) '1から6までの整数のどれかをNumにいれる
Select Case Num
Case 1
Num1 = Num1 + 1
Sikoro1 'サブプロシージャSikoro1へ
Case 2
Num2 = Num2 + 1
Sikoro2 'サブプロシージャSikoro2へ
Case 3
Num3 = Num3 + 1
Sikoro3 'サブプロシージャSikoro3へ
Case 4
Num4 = Num4 + 1
Sikoro4 'サブプロシージャSikoro4へ
Case 5
Num5 = Num5 + 1
Sikoro5 'サブプロシージャSikoro5へ
Case 6
Num6 = Num6 + 1
Sikoro6 'サブプロシージャSikoro6へ
End Select
Next i
'出た目の割合を表示
With Form1
.Label11 = Format(Num1 / kaisuu * 100, "0.0") & "%"
.Label12 = Format(Num2 / kaisuu * 100, "0.0") & "%"
.Label13 = Format(Num3 / kaisuu * 100, "0.0") & "%"
.Label14 = Format(Num4 / kaisuu * 100, "0.0") & "%"
.Label15 = Format(Num5 / kaisuu * 100, "0.0") & "%"
.Label16 = Format(Num6 / kaisuu * 100, "0.0") & "%"
'回数を表示
.Label17 = Format(Num1 & "回")
.Label18 = Format(Num2 & "回")
.Label19 = Format(Num3 & "回")
.Label20 = Format(Num4 & "回")
.Label21 = Format(Num5 & "回")
.Label22 = Format(Num6 & "回")
End With
'回数だけ求めるとき
'Form1.Print "1の目が出た回数は" & Num1 & "回です。"
'Form1.Print "2の目が出た回数は" & Num2 & "回です。"
'Form1.Print "3の目が出た回数は" & Num3 & "回です。"
'Form1.Print "4の目が出た回数は" & Num4 & "回です。"
'Form1.Print "5の目が出た回数は" & Num5 & "回です。"
'Form1.Print "6の目が出た回数は" & Num6 & "回です。"
End Sub
'終了
Private Sub Command2_Click()
End
End Sub
Private Sub Sikoro1()
'サイコロ1の描写
Form1.Line (Sx, Sy)-(Ex, Ey), White, BF
Form1.Line (Sx, Sy)-(Ex, Ey), Black, B
FillColor = Red ' FillColorを赤に設定します
FillStyle = 0 ' FillStyleを0-塗りつぶしにします
Form1.Circle (Sx + SLong * (1 / 2), Sy + SLong * (1 / 2)), Radius1, Red '円の描写
FillStyle = 1 ' FillStyleを1-透明にします
End Sub
Private Sub Sikoro2()
'サイコロ2の描写
Form1.Line (Sx, Sy)-(Ex, Ey), White, BF
Form1.Line (Sx, Sy)-(Ex, Ey), Black, B
FillColor = Black ' FillColorを赤に設定します
FillStyle = 0 ' FillStyleを0-塗りつぶしにします
Form1.Circle (Sx + SLong * (1 / 3), Sy + SLong * (1 / 3)), Radius, Black '円の描写
Form1.Circle (Sx + SLong * (2 / 3), Sy + SLong * (2 / 3)), Radius, Black '円の描写
FillStyle = 1 ' FillStyleを1-透明にします
End Sub
Private Sub Sikoro3()
'サイコロ3の描写
Form1.Line (Sx, Sy)-(Ex, Ey), White, BF
Form1.Line (Sx, Sy)-(Ex, Ey), Black, B
FillColor = Black ' FillColorを赤に設定します
FillStyle = 0 ' FillStyleを0-塗りつぶしにします
Form1.Circle (Sx + SLong * (1 / 4), Sy + SLong * (1 / 4)), Radius, Black '円の描写
Form1.Circle (Sx + SLong * (2 / 4), Sy + SLong * (2 / 4)), Radius, Black '円の描写
Form1.Circle (Sx + SLong * (3 / 4), Sy + SLong * (3 / 4)), Radius, Black '円の描写
FillStyle = 1 ' FillStyleを1-透明にします
End Sub
Private Sub Sikoro4()
'サイコロ4の描写
Form1.Line (Sx, Sy)-(Ex, Ey), White, BF
Form1.Line (Sx, Sy)-(Ex, Ey), Black, B
FillColor = Black ' FillColorを赤に設定します
FillStyle = 0 ' FillStyleを0-塗りつぶしにします
For i = 1 To 3 Step 2
For j = 1 To 3 Step 2
Form1.Circle (Sx + SLong * (j / 4), Sy + SLong * (i / 4)), Radius, Black '円の描写(4つ)
Next j
Next i
FillStyle = 1 ' FillStyleを1-透明にします
End Sub
Private Sub Sikoro5()
'サイコロ5の描写
Form1.Line (Sx, Sy)-(Ex, Ey), White, BF
Form1.Line (Sx, Sy)-(Ex, Ey), Black, B
FillColor = Black ' FillColorを赤に設定します
FillStyle = 0 ' FillStyleを0-塗りつぶしにします
For i = 1 To 3 Step 2
For j = 1 To 3 Step 2
Form1.Circle (Sx + SLong * (j / 4), Sy + SLong * (i / 4)), Radius, Black '円の描写(4つ)
Next j
Next i
Form1.Circle (Sx + SLong * (2 / 4), Sy + SLong * (2 / 4)), Radius, Black '円の描写
FillStyle = 1 ' FillStyleを1-透明にします
End Sub
Private Sub Sikoro6()
'サイコロ6の描写
Form1.Line (Sx, Sy)-(Ex, Ey), White, BF
Form1.Line (Sx, Sy)-(Ex, Ey), Black, B
FillColor = Black ' FillColorを赤に設定します
FillStyle = 0 ' FillStyleを0-塗りつぶしにします
For i = 1 To 3
For j = 1 To 3 Step 2
Form1.Circle (Sx + SLong * (j / 4), Sy + SLong * (i / 4)), Radius6, Black '円の描写(6つ)
Next j
Next i
FillStyle = 1 ' FillStyleを1-透明にします
End Sub
'クリア
Private Sub Command3_Click()
Text1.Text = ""
Form1.Cls
Text1.SetFocus
End Sub
'フォームロード時にどうするか
Private Sub Form_Load()
Command1.Enabled = False
End Sub
'テキスト1Changeイベント
Private Sub Text1_Change()
If Text1.Text = "" Then
Command1.Enabled = False
Else
Command1.Enabled = True
End If
End Sub
'アスキーコードの使用
'数字以外は入力できない
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii >= 48 And KeyAscii <= 57 Or KeyAscii = 8 Then
Else
KeyAscii = 0 'NULLということ!
End If
End Sub