【OXゲームを作る】
Excel で OXゲームを作る、3回目です。
2回目の記事で、
「一部、動作に不備はあるのですが、正しく操作すれば問題なく
遊べるようにはなりました。その個所は後々考えていきます。」
と書きました。
記事を公開した日の夜中、目が覚めてしまい、
しばらく うだうだ していたのですが、突然、
その不備の解決方法が頭に浮かんできました!
翌朝(本日)、多少の試行錯誤はありましたが、
問題解決できました!!!
問題というのは、ユーザだけでゲームが完結できてしまうところでした。
これじゃゲームではなくただマルを付けただけですよね。
マクロ
モジュールレベル変数(更新)
Dim A As Long, B As Long, C As Long
Dim D As Long, E As Long, F As Long
Dim G As Long, H As Long, I As Long
Dim Score As Long
Dim Flg As Long
Dim Ax As Long, Bx As Long, Cx As Long
Dim Dx As Long, Ex As Long, Fx As Long
Dim Gx As Long, Hx As Long, Ix As Long
Dim Scorex As Long
'赤字は前回から追加した変数の定義です
'これを使って不備を解決します
マルバツフィールド
Private Sub lbl001_Click()
Ax = 1 'この数値で1回に1つしかマルを置けないようにする
Call CheckDuplication '参照先のプロシージャで重複を防ぐ
If A <> 0 Then 'Aにフラグが立っている=確定 なので、抜ける
Exit Sub
ElseIf lbl001.Picture = 0 Then 'マル画像が表示されていなければ
lbl001.Picture = imgO.Picture 'マル画像を表示する
Ax = 10 'このフィールドにマルを表示させたことを表す
Else
lbl001.Picture = LoadPicture(none) 'マル画像を消す
End If
・
・
・
'このマクロを残りの lbl002 ~ lbl009 まで作ってください。
'lbl001 = A, Ax / lbl002 = B, Bx / lbl003 = C, Cx … のように、
'数字とアルファベットを対応させてください。
End Sub
重複チェック
Sub CheckDuplication()
Scorex = Ax + Bx + Cx + Dx + Ex + Fx + Gx + Hx + Ix
If Scorex = 11 Then
If Ax = 10 Then
lbl001.Picture = LoadPicture(none)
Ax = 0 '重複チェック用のフラグをリセットします
End If
・
・
・
'残り Bx ~ Ix (アイエックス)分を記述してください
End If
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1.クリックした時点で、重複チェックフラグを立てます。(Ax = 1 )
2.マルを表示して、重複チェックフラグを変更します。(Ax = 10)
3.「決定」ボタンを押さず、未確定のまま別のフィールをクリックします。
4.重複チェックフラグが立ちます。(Bx = 1)
5.この時点で、Ax ~ Ix の合計は「11」になります。(Scorex = 11)
(Ax = 10 + Bx = 1)
6.10のフラグが立っているフィールドのマル画像を消去して、
1のフラグのフィールドにマル画像を表示させます
7.10が立っていた重複チェックフラグをリセットします。(Ax = 0)
(先にクリックしたフィールド)
これでフィールドには必ず1つしかマルは表示されません。
重複チェックフラグの数値 1、10、11 を使って判定します。
うーん・・・
今日もここまでで、勘弁してください。
仕事終わった後の作業はなかなか疲れますね。
残りは明日です。
/_/_/_/_/_/_/_/_/_/_/_/_/_/_
個人用マクロブックについてはこちら
リボンに登録についてはこちら
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/