【Excel/VBAでじゃんけんゲーム03】
じゃんけんゲームの続き第3回です。
今回はマクロを記述していきます。
新規フォームの出し方から、ラベルの作成まではこちら↓
www.tuna-kichi.com
第2回目 残りのコマンドボタンなどの作成、配置はこちら↓
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
マクロの前に
忘れ物がありましたので、マクロに行く前に追加してください。
ここに表示させる「イメージ」を同じフォームに追加しておきます。
こんな感じで。
ここに表示させるイメージは、ネットから拾ったり、(著作権とか問題なければ)
自分の手を写真で撮ったり、
私のように Excel とペイントを使って絵をかいたりして用意してください。
形式は bmp(ビットマップ) にしてください。
※bmpでない画像の場合は、一度、ペイントに張り付けると
【保存】するときに拡張子を選択できるので、 bmp で保存してください。
ツールボックスからイメージをフォームに追加して、
プロパティの【Picture】の【…】をクリックすると、フォルダが開くので、
用意した じゃんけんのイメージを選択してください。
それぞれのイメージに対して以下のようにプロパティを調整してください。
(大きさ(Height, Width)はお任せします)
オブジェクト名 | Visible | Height | Width |
imgRock | False | 30 | 30 |
imgScissors | False | 30 | 30 |
imgPaper | False | 30 | 30 |
Height・・・高さ(発音は「ハイト」)
Width・・・幅(発音は with と同じ「ウィズ」)
False・・・うそ、偽物(ここでは「電源をOFFにする」の様な意味で使われます)
マクロ
ここからコマンドボタンや、Initialize のマクロを書いていきます。
閉じる
まずは、一番簡単で最初に作っておくと便利な「閉じる」から。
フォームに作った【閉じる】のボタンをダブルクリックすると、
VBEが開くので、そのなかに 「End」と書くだけ
****************************************************************
Private Sub cmdClose_Click()
End
End Sub
****************************************************************
User form Initialize (フォームの初期化)
フォームが起動するたびに、数値とかを初期させます。
フォームの空いているスペースをダブルクリックしてから、
下の図のように変更してください。
**********************************************************************************
Private Sub UserForm_Initialize()
'ここで勝敗表の「勝」「負」「分」の数値を「0」(ゼロ)に設定します
lblWin.Caption = 0
lblDraw.Caption = 0
lblLose.Caption = 0
End Sub
**********************************************************************************
Caption・・・短い説明文、字幕(ここではラベルに表示する文字列)
リセット
リセットもフォームの初期化と同じコードを使いましょう。
そのままコピペで。
**********************************************************************************
Private Sub cmdReset_Click()
lblWin.Caption = 0
lblDraw.Caption = 0
lblLose.Caption = 0
End Sub
**********************************************************************************
オプションボタン(グー・チョキ・パー)
オプションボタンで選択したグー・チョキ・パーのイメージを表示させます。
それぞれのオプションボタンに「Rock」の部分を変えて記述してください。
****************************************************************
Private Sub opRock_Click()
If opRock = True Then
imgYou.Picture = imgRock.Picture
End If
End Sub
****************************************************************
ぽん
最後に勝敗の判断とコンピュータが選択した手のイメージを
表示させるコードです。
ちょっと長いです。
****************************************************************
Private Sub cmdFight_Click()
'「あなた」の選択肢に数字を割り当てるので、この変数に数値を定義します
Dim YouRock As Long
Dim YouPeper As Long
Dim YouScissors As Long
'「Comp」の選択肢に数字を割り当てるので、この変数に数値を定義します
Dim CompRock As Long
Dim CompPeper As Long
Dim CompScissors As Long
'それぞれが選択した手を数値に置き換えるので、定義します
Dim You As Long
Dim Comp As Long
'オプションで選択した手を数値に変更する
Select Case imgYou.Picture
Case imgRock.Picture
You = 1
Case imgScissors.Picture
You = 2
Case imgPaper.Picture
You = 3
End Select
'Compの手を決めるために1-3の乱数を発生させる関数です
Comp = Int(3 * Rnd() + 1)
'1グー、2チョキ、3パーを割当て、イメージを表示させる
Select Case Comp
Case 1
imgComp.Picture = imgRock.Picture
Case 2
imgComp.Picture = imgScissors.Picture
Case 3
imgComp.Picture = imgPaper.Picture
End Select
'勝敗見極め、勝敗表に数字を加算する
Select Case You
Case Is = 1 'グー
If Comp = 1 Then 'Compがグー
lblDraw.Caption = lblDraw.Caption + 1
ElseIf Comp = 2 Then 'Compがチョキ
lblWin.Caption = lblWin.Caption + 1
Else 'Compがパー
lblLose.Caption = lblLose.Caption + 1
End If
Case Is = 2 'チョキ
If Comp = 1 Then 'Compがグー
lblLose.Caption = lblLose.Caption + 1
ElseIf Comp = 2 Then 'Compがチョキ
lblDraw.Caption = lblDraw.Caption + 1
Else 'Compがパー
lblWin.Caption = lblWin.Caption + 1
End If
Case Is = 3 'パー
If Comp = 1 Then 'Compがグー
lblWin.Caption = lblWin.Caption + 1
ElseIf Comp = 2 Then 'Compがチョキ
lblLose.Caption = lblLose.Caption + 1
Else 'Compがパー
lblDraw.Caption = lblDraw.Caption + 1
End If
End Select
End Sub
****************************************************************
きっと上級者の方ならもっとスマートな書き方をされるのかもしれませんが、
私が、自分で何を書いたか理解できるマクロです。
学生の時に作成したマクロとは違うかもしれませんが、
同じようにじゃんけんゲームとして動作するので、OKとしてください。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
英語 x エンジニア = 最強
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/