[[20211230194302]] 『じゃんけんプログラムについて』(わかりません) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『じゃんけんプログラムについて』(わかりません)

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.