/// 実習E5 コントロール(チェックボックス) | プログラミング実習 |
プロジェクト名 実習E5組合せ当てゲーム
説明
チェックをする組合せを当てるゲーム。
デザイン
フォームのプロパティ
Font.Size = 11
Size = 300, 180
コード(プログラム)
Public Class Form1
Dim seikai, nokori As Integer '正解と残り回数の格納用
'(どのメソッドからも参照できる変数)
Sub GameInit()
Dim rr As New System.Random
seikai = rr.Next(2 ^ 4) '正解を乱数(0〜15)で生成する
nokori = 8
cbA. @ = False 'すべてのチェックを外す
cbB. @ = False
cbC. @ = False
cbD. @ = False
btnHantei.Enabled = True '判定ボタンを有効にする
btnRetry.Enabled = False 'もう一度ボタンを無効にする
MessageBox.Show(seikai)
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
GameInit()
End Sub
Private Sub btnHantei_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnHantei.Click
Dim atari As Integer
If cbA.Checked = True And (seikai And 1) = 1 Then ←If1
atari = atari + 1
ElseIf cbA.Checked = False And (seikai And 1) = 0 Then
atari = atari + 1
End If
If cbB.Checked = A And (seikai And 2) = 2 Then ←If2
atari = atari + 1
ElseIf cbB.Checked = B And (seikai And 2) = 0 Then
atari = atari + 1
End If
If cbC.Checked = True And (seikai And 4) = C Then ←If3
atari = atari + 1
ElseIf cbC.Checked = False And (seikai And 4) = D Then
atari = atari + 1
End If
If cbD.Checked = True And (seikai And 8) = 8 Then ←If4
atari = E
ElseIf cbD.Checked = False And (seikai And 8) = 0 Then
atari = E
End If
lblHint.Text = atari.ToString & "ヵ所正解です"
If atari = 4 Then
MessageBox.Show("当たりです。", "実習E5")
btnHantei.Enabled = F '判定ボタンを無効にする
btnRetry.Enabled = G 'もう一度ボタンを有効にする
End If
nokori = nokori - 1
If nokori = -1 Then
btnHantei.Enabled = False
btnRetry.Enabled = True
Exit Sub
End If
lblNokori.Text = "残り" & nokori & "回です"
End Sub
Private Sub btnRetry_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnRetry.Click
GameInit()
End Sub
End Class
解説
乱数で生成しる正解は0〜15の整数である。チェックボックスを4ケタの2進数と見なして、正解と比較している。
例えば、正解が3のとき、2進数で表すと0011となるので、seikai And 1の計算結果は、If1では1、If2では2、If3とIf4では0となる。そのとき、If1とIf2はCheckedがTrueであればatariに1を加算する。また、If3とIf4はCheckedがFalseであればatariに1を加算する。
atariが4になれば組合せを当てたことになる。
テスト
遊んでみて。目標8回。
/// 実習E5 コントロール(チェックボックス) | Copyright©2014 Hiroshi Masuda |