gpt4 book ai didi

vb.net - Visual Basic 如何比较标签中的 3 个值?

转载 作者:行者123 更新时间:2023-12-02 09:51:08 27 4
gpt4 key购买 nike

我已经尝试了所有可能的组合,但就是无法让它正常工作。该游戏需要测试所有 3 个骰子是否相同,如果相同,则分值加一并显示在 lblPoints 中。

这是我需要更改的具体代码行:

    If (lblDice.Text = lblDice2.Text) And (lblDice2.Text = lblDice3.Text) Then
Points += 1
End If

以下是整个游戏(如果有帮助的话):

    Dim randomObject As New Random()
Dim n, m, o, p As Integer
Dim RollNumber = 1
Dim TurnNumber As Integer
Dim Points As Integer

Private Sub btnRoll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRoll.Click
lblPoints.Text = Points

If (lblDice.Text = lblDice2.Text) And (lblDice2.Text = lblDice3.Text) Then
Points += 1
End If

If btnHold.Enabled = True Then
Timer1.Enabled = True
End If
If btnHold2.Enabled = True Then
Timer2.Enabled = True
End If
If btnHold3.Enabled = True Then
Timer3.Enabled = True
End If

TurnNumber += 1
lblTurns.Text = TurnNumber

If TurnNumber = 3 Then
RollNumber += 1
TurnNumber = 0
End If

lblRolls.Text = RollNumber

If RollNumber = 5 Then
btnRoll.Enabled = False
If Points = 0 Or 1 Then
lblPoints2.Text = "You have done poorly"
ElseIf Points = 2 Or 3 Then
lblPoints2.Text = "Mediocre at best"
ElseIf Points = 4 Then
lblPoints2.Text = "Almost perfect"
ElseIf Points = 5 Then
lblPoints2.Text = "Almost perfect"
picJackpot.Visible = True
End If
End If


End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
m = m + 1
If m < 10 Then
n = randomObject.Next(1, 7)
lblDice.Text = n
die1PictureBox.Image = ImageList1.Images(n - 1)
Else
Timer1.Enabled = False
m = 0
End If
End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
m = m + 1
If m < 10 Then
n = randomObject.Next(1, 7)
lblDice2.Text = n
die2PictureBox.Image = ImageList1.Images(n - 1)
Else
Timer2.Enabled = False
m = 0
End If
End Sub

Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
m = m + 1
If m < 10 Then
n = randomObject.Next(1, 7)
lblDice3.Text = n
die3PictureBox.Image = ImageList1.Images(n - 1)
Else
Timer3.Enabled = False
m = 0
End If
End Sub

Private Sub btnHold_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHold.Click
btnHold.Enabled = False
btnUnhold.Enabled = True
End Sub

Private Sub btnUnhold_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUnhold.Click
btnHold.Enabled = True
btnUnhold.Enabled = False
End Sub

Private Sub btnHold2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHold2.Click
btnHold2.Enabled = False
btnUnhold2.Enabled = True
End Sub

Private Sub btnUnhold2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUnhold2.Click
btnHold2.Enabled = True
btnUnhold2.Enabled = False
End Sub

Private Sub btnHold3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHold3.Click
btnHold3.Enabled = False
btnUnhold3.Enabled = True
End Sub

Private Sub btnUnhold3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUnhold3.Click
btnHold3.Enabled = True
btnUnhold3.Enabled = False
End Sub

Private Sub btnRestart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRestart.Click
Dim msg As String
Dim title As String
Dim style As MsgBoxStyle
Dim response As MsgBoxResult
msg = "Are you sure you want to start a new game? If not, you can select 'No' to continue with your current game."
style = MsgBoxStyle.DefaultButton2 Or _
MsgBoxStyle.Critical Or MsgBoxStyle.YesNo
title = "New Game"

response = MsgBox(msg, style, title)
If response = MsgBoxResult.Yes Then
Reset()

End If



End Sub


Private Sub ColorChangeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ColorChangeToolStripMenuItem.Click

'Notice the ... in the menu...that means a dialog box will come

Dim dialog As New ColorDialog ' Color Dialog
Dim result As DialogResult ' stores Button clicked

dialog.FullOpen = True ' show all colors
result = dialog.ShowDialog

' do nothing if user clicked dialog's Cancel Button
If result <> Windows.Forms.DialogResult.Cancel Then
' assign new color to Paint object
Label1.ForeColor = dialog.Color
End If


End Sub

Private Sub FontChangeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FontChangeToolStripMenuItem.Click
'Notice the ... in the menu...that means a dialog box will come

Dim dialog As New FontDialog ' Font Dialog
Dim result As DialogResult ' stores Button clicked

' show dialog and get result
result = dialog.ShowDialog()

' do nothing if user clicked dialog's Cancel Button
If result <> Windows.Forms.DialogResult.Cancel Then
' assign new font value to TextBox
If Windows.Forms.DialogResult.OK = MessageBox.Show("Changing Font. Click Ok to Change,\n Cancel for no change to occur.", _
"Warning", MessageBoxButtons.OKCancel) Then
Label1.Font = dialog.Font
End If


End If


End Sub

Private Sub SelectAColorToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectAColorToolStripMenuItem.Click

Dim dialog As New ColorDialog ' Color Dialog
Dim result As DialogResult ' stores Button clicked

dialog.FullOpen = True ' show all colors
result = dialog.ShowDialog()

' do nothing if user clicked dialog's Cancel Button
If result <> Windows.Forms.DialogResult.Cancel Then
Me.BackColor = dialog.Color
End If

End Sub

Private Sub SelectAnImageToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectAnImageToolStripMenuItem.Click
Dim msg As String
Dim title As String
Dim style As MsgBoxStyle
Dim response As MsgBoxResult
msg = "Are you sure you want to see what happens when you get a perfect score without actually playing? That's cheating.. and will reset the game!"
style = MsgBoxStyle.DefaultButton2 Or _
MsgBoxStyle.Critical Or MsgBoxStyle.YesNo
title = "New Game"

response = MsgBox(msg, style, title)
If response = MsgBoxResult.Yes Then
Dim FileChooser As New OpenFileDialog()
Dim result As DialogResult

result = DialogResult = FileChooser.ShowDialog()

If result <> Windows.Forms.DialogResult.Cancel Then
If FileChooser.FileName <> "" Then
Me.BackgroundImage = System.Drawing.Image.FromFile(FileChooser.FileName)
Reset()
Else
MessageBox.Show("No Change Made. File Not Selected!", "Warning", _
System.Windows.Forms.MessageBoxButtons.OK, _
System.Windows.Forms.MessageBoxIcon.Exclamation)
End If
End If
End If

End Sub

Private Sub btnHow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHow.Click
MessageBox.Show(" You will have 5 rolls. In each roll you have up to 3 turns. Your object in each of the turns is to get three of a kind on the dice. You can hold some die and roll only some of the die, or you can reroll all the dice. If in a turn you get three of a kind, you get a point. At the end of 5 turns you could have a maximum of 5 points and you will get a special prize.")
End Sub

Sub Reset()
RollNumber = 1
lblRolls.Text = RollNumber
TurnNumber = 0
lblTurns.Text = TurnNumber
Points = 0
lblPoints.Text = Points
lblPoints2.Text = ""

btnRoll.Enabled = True
btnHold.Enabled = True
btnHold2.Enabled = True
btnHold3.Enabled = True
btnUnhold.Enabled = False
btnUnhold2.Enabled = False
btnUnhold3.Enabled = False

die1PictureBox.Image = Nothing
die2PictureBox.Image = Nothing
die3PictureBox.Image = Nothing
lblDice.Text = ""
lblDice2.Text = ""
lblDice3.Text = ""
End Sub
End Class

最佳答案

发生的情况是,在运行重置子例程之后以及启动程序时,您将获得对“”的有效比较,因为您的骰子被初始化为相同的值。尝试使用 bool 值来表示新的游戏,这样当你的骰子从头开始时,你将不会得到匹配的结果。像这样的东西。

将 bool 变量添加到您的声明中

Dim Restart as Boolean = True

在 BtnRoll_Click 事件处理程序中

If Not restart Then
If (lblDice.Text = lblDice2.Text) And (lblDice2.Text = lblDice3.Text) Then
Points += 1
End If
End If
Restart = False

并将其添加到重置子例程的末尾。

Restart = True

关于vb.net - Visual Basic 如何比较标签中的 3 个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15513536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com