[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『じゃんけんプログラムについて』(わかりません)
1.InputBoxからMsgBoxにして、はい、いいえ、キャンセルの三つのボタンを出して、マウスだけで操作できるようにしたいです。
2.現在の勝敗数をタイトルバーに出現させたいです。
3.マウスではいを選択した後に、勝敗履歴を勝敗結果のメッセージに〇●△として表示させたいです。
自分の力では、ここまでしかできなかったので、おしえてほしいです。お願いします。
Sub sample()
Dim man As Integer, com As Integer
Dim kekka As String
Randomize com = Int(Rnd * 3) man = InputBox("あなたの手は? (グー(はい), チョキ(いいえ),パー(キャンセル)")
Select Case (com - man + 3) Mod 3 Case 0 kekka = "あいこ" Case 1 kekka = "あなたの勝ち" Case 2 kekka = "パソコンの勝ち" End Select
MsgBox "あなた=" & man & ", パソコン=" & com & " > " & kekka
End Sub
< 使用 Excel:unknown、使用 OS:unknown >
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/msgbox-function
(ひまつぶし) 2021/12/30(木) 20:04
サンプルなので変数を使用せずに、セルを勝敗表としました。 10 回じゃんけんしたとして、MsgBoxのタイトルバーに勝敗を出します。
例 A1 B1 C1 5勝 3敗 2分
Sub Sample() Dim ans As Integer ans = MsgBox("じゃんけんしますか?", _ vbYesNo + vbInformation + vbApplicationModal, Range("A1") & Range("B1") & Range("C1")) End Sub
因みに勝負は何回するのだろうか?(笑) (あみな) 2021/12/30(木) 21:33
-------- Sub sample() Dim man As Integer, com As Integer, res As Integer Dim wins As Integer, losses As Integer, draws As Integer Dim kekka As String, rireki As String Randomize Do com = Int(Rnd * 3) man = MsgBox("あなたの手は? (グー(はい), チョキ(いいえ),パー(キャンセル)", _ vbYesNoCancel, "じゃんけん") Select Case man Case vbYes man = 0 Case vbNo man = 1 Case 2 man = 2 End Select Select Case (com - man + 3) Mod 3 Case 0 kekka = "あいこ" rireki = rireki & "△" draws = draws + 1 Case 1 kekka = "あなたの勝ち" rireki = rireki & "◯" wins = wins + 1 Case 2 kekka = "パソコンの勝ち" rireki = rireki & "●" losses = losses + 1 End Select res = MsgBox("あなた=" & man & ", パソコン=" & com & " > " & kekka & vbCrLf & _ "じゃんけんを続けますか?", vbYesNo, rireki) Loop Until res = vbNo
MsgBox "結果は、あなたの" & wins & "勝" & losses & "敗" & draws & "分けでした。" End Sub --------- (hatena) 2021/12/30(木) 23:32
こんばんは! ちょっと出遅れ(^^; なるべく原案を尊重しつつ私風に書いてみました。 何かの参考になれば幸いです。。。というかぁ、、あってますかぁ????
Option Explicit Sub sample() Dim man As Long, com As Long Dim kekka As String Dim x As Variant Static 履歴 As String Static あなた As Long Static PC As Long Static あいこ As Long Randomize x = Array(6, 7, 2) MyFScs x com = x(0) MsgBox 履歴 & vbCrLf & _ "あなたの勝ち数=" & あなた & vbCrLf & _ "PCの勝ち数=" & PC & vbCrLf & _ "あいこ数=" & あいこ man = MsgBox("あなたの手は? (グー(はい), チョキ(いいえ),パー(キャンセル)", vbYesNoCancel) If man = com Then kekka = "あいこ" あいこ = あいこ + 1 履歴 = 履歴 & "△" Else If man = 6 Then Select Case com Case 7 kekka = "あなたの勝ち" あなた = あなた + 1 履歴 = 履歴 & "〇" Case 2 kekka = "パソコンの勝ち" PC = PC + 1 履歴 = 履歴 & "●" End Select End If If man = 7 Then Select Case com Case 2 kekka = "あなたの勝ち" あなた = あなた + 1 履歴 = 履歴 & "〇" Case 6 kekka = "パソコンの勝ち" PC = PC + 1 履歴 = 履歴 & "●" End Select End If If man = 2 Then Select Case com Case 6 kekka = "あなたの勝ち" あなた = あなた + 1 履歴 = 履歴 & "〇" Case 7 kekka = "パソコンの勝ち" PC = PC + 1 履歴 = 履歴 & "●" End Select End If End If MsgBox "あなた=" & man & ", パソコン=" & com & " > " & kekka Erase x End Sub Private Sub MyFScs(ByRef x As Variant) Dim y As Variant Dim i As Long Dim j As Long Dim MyScs As Object Set MyScs = CreateObject("System.Collections.SortedList") ReDim y(LBound(x, 1) To UBound(x, 1)) For i = LBound(x, 1) To UBound(x, 1) MyScs(Rnd()) = i Next For i = 0 To MyScs.Count - 1 y(i) = x(MyScs.GetByIndex(i)) Next x = y Set MyScs = Nothing Erase y End Sub なるほど、、hatena さんの履歴はわかりやすくていいですね ちょっと真似して入れておきました。。。 (SoulMan) 2021/12/30(木) 23:56
>勝敗履歴を勝敗結果のメッセージに〇●△として表示させたいです
〇●△は、つくってないし、だいぶ...出遅れ(^^; ... もう寝ますw
(hatena)さんの Do Loop でいい感じですね
Sub Sample_Game()
Dim kekka As String Dim man As Integer, com As Integer Dim RetMsg As VbMsgBoxResult
Randomize com = Int(Rnd * 3) '' 乱数生成 MsgBox "パソコン側 " & com '' ここは確認用だから消して使用 RetMsg = MsgBox _ (" じゃんけんしますか?" & vbCrLf & _ vbCrLf & _ " 負けたら罰ゲームですよ ... あなたの手は?" & vbCrLf & _ vbCrLf & _ " 『 はい 』 を押すと、 グー" & vbCrLf & _ " 『 いいえ 』 を押すと、チョキ" & vbCrLf & _ " 『 キャンセル 』 を押すと、パー", _ vbYesNoCancel + vbInformation, Title:="INFO")
Select Case RetMsg Case vbYes If vbYes Then man = 0 Select Case (com - man + 3) Mod 3 Case 0: kekka = "あいこ" Case 1: kekka = "あなたの勝ち" Case 2: kekka = "パソコンの勝ち" End Select Case vbNo If vbNo Then man = 1 Select Case (com - man + 3) Mod 3 Case 0: kekka = "あいこ" Case 1: kekka = "あなたの勝ち" Case 2: kekka = "パソコンの勝ち" End Select Case vbCancel If vbCancel Then man = 2 Select Case (com - man + 3) Mod 3 Case 0: kekka = "あいこ" Case 1: kekka = "あなたの勝ち" Case 2: kekka = "パソコンの勝ち" End Select End Select MsgBox "あなた" & man '' 確認 " 遅出し用 MsgBox "あなた=" & man & ", パソコン=" & com & " > " & kekka
End Sub
(あみな) 2021/12/31(金) 00:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.