題名通りのコードを作っているのですが、どうもうまくいきません。以下のように表示したいのですが…。
(1)コンピュータの(出す手の)確率を表示したうえで、ユーザーの(出す手の)入力を得る。
例:コンピュータの確率 グ(0) : 40, チ(1) : 12, パ(2) : 99
あなたの手は?(0,1,2)
(2)ユーザー、コンピュータの勝ち数、じゃんけんの結果、ユーザーの連勝数を表示。
例:YOU=2,PC=0, > Win : 1連勝
(3)3連勝したら経過時間を表示して終了。
例:TIME : 14秒
以下作成したコードです。
Sub Main()
Dim StartTime, StopTime As Variant
Dim man As Integer, com As Integer
Dim Prob_G, Prob_C, Prob_P, ProbSum As Integer
Dim kekka As String
Dim rand As Integer
Dim count As Integer
Randomize
StartTime = Time
count = 0
Do While count < 3
Prob_G = Int(Rnd * 100)
Prob_C = Int(Rnd * 100)
Prob_P = Int(Rnd * 100)
ProbSum = Prob_G + Prob_C + Prob_P
rand = Int(Rnd * ProbSum)
If Prob_G Then
com = 0
ElseIf Prob_C Then
com = 1
ElseIf Prob_P Then
com = 2
End If
man = InputBox("あなたの手は?(0,1,2)")
Select Case (com - man + 3) Mod 3
Case 0
kekka = "Draw"
Case 1
kekka = "Win"
count = count + 1
Case 2
kekka = "Lose"
count = 0
End Select
MsgBox "YOU=" & man & ",PC=" & com & " > " & kekka & " : " & count & "連勝"
Loop
StopTime = Time
MsgBox "TIME:" & Second(StopTime) & " 秒"
End Sub
穴が多くてすみません…このまま実行するとコンピュータの確率が表示されず、コンピュータの出す手がなぜかグーで固定されてしまいます。If文が機能していないようですorz
コードはできるだけこのままの形でお願いします。私はエクセル初心者で、独学ではこれが限界でした。ご教授お願いします。
No.2ベストアンサー
- 回答日時:
こんな感じでどうでしょう。
Sub Main()
Dim StartTime As Long, StopTime As Long
Dim man As Integer, com As Integer
Dim Rnd_G As Single, Rnd_C As Single, Rnd_P As Single, RndSum As Single
Dim Prob_G As Integer, Prob_C As Integer, Prob_P As Integer
Dim kekka As String
Dim rand As Single
Dim count As Integer
Randomize
StartTime = Timer
Do While count < 3
Rnd_G = Rnd
Rnd_C = Rnd
Rnd_P = Rnd
RndSum = Rnd_G + Rnd_C + Rnd_P
Prob_G = Rnd_G / RndSum * 100
Prob_C = Rnd_C / RndSum * 100
Prob_P = 100 - Prob_G - Prob_C
rand = Rnd * 100
If rand < Prob_G Then
com = 0
ElseIf rand < Prob_G + Prob_C Then
com = 1
Else
com = 2
End If
On Error GoTo キャンセル処理
man = InputBox("コンピュータの確率 グ(0):" & Prob_G & _
"% チ(1):" & Prob_C & "% パ(2):" & Prob_P & "%" & vbCrLf & "あなたの手は?(0,1,2)")
On Error GoTo 0
Select Case (com - man + 3) Mod 3
Case 0
kekka = "Draw"
Case 1
kekka = "Win"
count = count + 1
Case 2
kekka = "Lose"
count = 0
End Select
MsgBox "YOU=" & man & ",PC=" & com & " > " & kekka & " : " & count & "連勝"
Loop
StopTime = Timer
MsgBox "TIME: " & StopTime - StartTime & "秒"
Exit Sub
キャンセル処理:
End Sub
ありがとうございます!まさかここまで完璧に回答してもらえるとは…!If文は不等号で乱数とつなげばよかったのですね。まったくきづきませんでした。ありがとうございます。
No.1
- 回答日時:
If Prob_G Then
com = 0
ElseIf Prob_C Then
com = 1
ElseIf Prob_P Then
com = 2
End If
この部分では、何を判定しようとして 書いたコードですか?
※このままでは、常に com = 0 になります。
この回答への補足
そこは乱数で Prob_G, Prob_C, Prob_P をランダムに設定したいのです。でも言われてみれば確かにそうでした。特定のものをIfの先頭に置いちゃだめですよね。 ProbSum とおくべき…ですかね。それともそれに Int(Rnd * 3) をイコールでおくべき…? あいまいですみません。違ってたら訂正お願いします。
補足日時:2010/11/25 20:40お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
確率
-
30%の確率が5回連続で起きない...
-
ふと疑問に思いました。世の中...
-
確率0.02%って10000人に2人です...
-
そういえば、人が両思いになる...
-
1個のサイコロを3回投げる時、...
-
75%を3回連続で引かない確率
-
公務員試験の数的推理(確率)の...
-
4択一の50問100点満点の問題を...
-
P(A|B)などの読み方
-
トコジラミ
-
次の硬貨を同時に投げる時表の...
-
一般常識を教えてください。1割...
-
五分を6回連続で外すのはなん...
-
期待値の漸化式問題における解法
-
子供が親より先に死ぬ確率は計...
-
20%の不良品を含む製品の中から...
-
トランプ 確率
-
街の中や駅で好きな人にばった...
-
「○○通りのパターンがある」の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一般常識を教えてください。1割...
-
30%の確率が5回連続で起きない...
-
「天文学的に低い確率」とは?
-
75%を3回連続で引かない確率
-
P(A|B)などの読み方
-
五分を6回連続で外すのはなん...
-
「○○通りのパターンがある」の...
-
トコジラミ
-
確率0.02%って10000人に2人です...
-
確率
-
10本のくじの中に当たりくじが2...
-
数学の質問です。 一枚の硬貨を...
-
1個のサイコロを3回投げる時、...
-
朝起きてスマホの時計をみると4...
-
皆さんが高校数学で、一番感動...
-
確率の質問です 当たる確率が10...
-
イケメンに生まれる確率と、金...
-
反応速度や濃度は、大きいor小...
-
3σについて教えてください(基...
-
会う確率はどのくらい? 徒歩...
おすすめ情報