私はvb.netの三項演算子を使用して動作するロックペーパーはさみゲームを取得しようとしていますが、実際の結果がIE、R対P =損失、R対S =損失、R対R =損失に関係なく、同じ結果を出力し続けます)ロックペーパーはさみIIFしかしIIFは結果の名前のconstの値を変更していません
私はもともと試したことがありますoutcome/draw boolをプレースホルダーとして使用し、最後にifを付けて結果を表示し、IIFの直後のifs内にexitスイッチを追加しましたが、それでも結果を変更しないループが発生します。
Public Class Form1
Const ROCK As Integer = 1
Const PAPER As Integer = 2
Const SCISSORS As Integer = 3
Dim computerThrow As Integer
Dim comThrow As String = "Rock"
Dim wins As Integer
Dim losses As Integer
Dim draws As Integer
Dim outcome As Boolean = True
Dim draw As Boolean = True
'Spent two days debugging, kept getting more broken. hmm
Private Sub btnThrow_Click(sender As Object, e As EventArgs) Handles btnThrow.Click
'Generate computer throw
Randomize()
computerThrow = Int(3 * Rnd() + 1)
'Select case block
Select Case computerThrow
Case ROCK
comThrow = "rock"
IIf(Me.radRock.Checked = True, draw = True, 1 = 1) 'Ternarys to decide outcome/draw
If draw = True Then 'If to decide whether to exit or not
Me.lblWinner.Text = "Computer throws " + comThrow + ", it's a draw!"
draws = draws + 1
End If
IIf(Me.radPaper.Checked = True, outcome = True, 1 = 1)
If outcome = True Then
Me.lblWinner.Text = "Computer throws " + comThrow + ", you win!"
wins = wins + 1
End If
IIf(Me.radScissors.Checked = True, outcome = False, 1 = 1)
If outcome = False And draw = False Then
Me.lblWinner.Text = "Computer throws " + comThrow + ", you lose!"
losses = losses + 1
End If
Case PAPER
comThrow = "paper"
IIf(Me.radRock.Checked = True, outcome = False, 1 = 1)
If outcome = False And draw = False Then
Me.lblWinner.Text = "Computer throws " + comThrow + ", you lose!"
losses = losses + 1
End If
IIf(Me.radPaper.Checked = True, draw = True, 1 = 1)
If draw = True Then
Me.lblWinner.Text = "Computer throws " + comThrow + ", it's a draw!"
draws = draws + 1
End If
IIf(Me.radScissors.Checked = True, outcome = True, 1 = 1)
If outcome = True Then
Me.lblWinner.Text = "Computer throws " + comThrow + ", you win!"
wins = wins + 1
End If
Case SCISSORS
comThrow = "scissors"
IIf(Me.radRock.Checked = True, outcome = True, 1 = 1)
If outcome = True Then
Me.lblWinner.Text = "Computer throws " + comThrow + ", you win!"
wins = wins + 1
End If
IIf(Me.radPaper.Checked = True, outcome = False, 1 = 1)
If outcome = False And draw = False Then
Me.lblWinner.Text = "Computer throws " + comThrow + ", you lose!"
losses = losses + 1
End If
IIf(Me.radScissors.Checked = True, draw = True, 1 = 1)
If draw = True Then
Me.lblWinner.Text = "Computer throws " + comThrow + ", it's a draw!"
draws = draws + 1
End If
End Select
Me.lblResults.Text = "wins: " + wins.ToString() + " Lose: " + losses.ToString() + " draws: " + draws.ToString()
End Sub
End Class
チェックし、[ドキュメント](httpsを書くことができます:// MSDNをMicrosoft.com/ja-ja/library/27ydhh0d(v = 90).aspx)、私はそれがあなたの考えであるとは思わない。 IIfは変数を設定するのではなく、変数を返すことを意味します。今のところ、IIfの戻り値はどこにも使用していません。 –
@the_lotus IIFの中でlblWinner.Textを設定しようとしましたが、うまくいかないでしょうか?それは表現を期待していると私に言った? – Zen72901
@ Zen72901それは、値を設定するのではなく比較を行います。 –