Noah Markum
Noah Markum

Reputation:

Unexpected behavior in select-case in button event

So i am trying to make a program that will decide which of two players wins by rollong 2 die per person and adding the value of those die together and comparing them. the problem i am having currently is that my case select statements are giving me the error "Error 1 Operator '=' is not defined for types 'System.Windows.Forms.PictureBox' and 'Integer'" i have stared at this for three hours. can anyone help me? ( yes i am new to VB )

    Private Sub btnRollDice_Click(sender As Object, e As EventArgs) Handles btnRollDice.Click
    Dim intRandGen As New Random
    Dim intPlayer1Num1 As Integer
    Dim intPlayer1Num2 As Integer
    Dim intPlayer2Num1 As Integer
    Dim intplayer2Num2 As Integer
    Static intPlayer1Total As Integer
    Static intPlayer2Total As Integer
    Static intTieTotal As Integer

    'assign random integer from 1 through 6
    intPlayer1Num1 = intRandGen.Next(1, 7)
    intPlayer1Num2 = intRandGen.Next(1, 7)
    intPlayer2Num1 = intRandGen.Next(1, 7)
    intplayer2Num2 = intRandGen.Next(1, 7)

    'display appropriate image in picDie1 for player one
    Select Case player2PicDie1
        Case 1
            player2PicDie1.Image = picOneDot.Image
        Case 2
            player2PicDie1.Image = picTwoDots.Image
        Case 3
            player2PicDie1.Image = picThreeDots.Image
        Case 4
            player2PicDie1.Image = picFourDots.Image
        Case 5
            player2PicDie1.Image = picFiveDots.Image
        Case 6
            player2PicDie1.Image = picSixDots.Image
    End Select

    'display appropriate image in picDie2 for player one
    Select Case Player1PicDie2
        Case 1
            Player1PicDie2.Image = picOneDot.Image
        Case 2
            Player1PicDie2.Image = picTwoDots.Image
        Case 3
            Player1PicDie2.Image = picThreeDots.Image
        Case 4
            Player1PicDie2.Image = picFourDots.Image
        Case 5
            Player1PicDie2.Image = picFiveDots.Image
        Case 6
            Player1PicDie2.Image = picSixDots.Image
    End Select

    'display appropriate image in picDie1 for player two
    Select Case player2PicDie1
        Case 1
            player2PicDie1.Image = picOneDot.Image
        Case 2
            player2PicDie1.Image = picTwoDots.Image
        Case 3
            player2PicDie1.Image = picThreeDots.Image
        Case 4
            player2PicDie1.Image = picFourDots.Image
        Case 5
            player2PicDie1.Image = picFiveDots.Image
        Case 6
            player2PicDie1.Image = picSixDots.Image
    End Select

    'display appropriate image in picDie2 for player two
    Select Case Player2PicDie2
        Case 1
            Player2PicDie2.Image = picOneDot.Image
        Case 2
            Player2PicDie2.Image = picTwoDots.Image
        Case 3
            Player2PicDie2.Image = picThreeDots.Image
        Case 4
            Player2PicDie2.Image = picFourDots.Image
        Case 5
            Player2PicDie2.Image = picFiveDots.Image
        Case 6
            Player2PicDie2.Image = picSixDots.Image
    End Select

    'Calculate and display total number of dots for player one
    intPlayer1Total = intPlayer1Num1 + intPlayer1Num2
    lblPlayer1Total.Text = intPlayer1Total.ToString()

    'Calculate and display total number of dots for player two
    intPlayer2Total = intPlayer2Num1 + intplayer2Num2
    lblPlayer2Total.Text = intPlayer2Total.ToString()


    If lblPlayer1Total.Text = lblPlayer2Total.Text Then
        MessageBox.Show("You have tied")
    End If
End Sub

Upvotes: 0

Views: 43

Answers (2)

Siva Gopal
Siva Gopal

Reputation: 3502

If I understand your code, you are trying to branch over a Picture Type instead of integer Type value in the select...Case

Based on the program context, I think you should be branching over an integer like:

Select Case intPlayer1Num1  'in place of intPlayer1Num1, you can use appropriate integer variable/value
Case 1 
      player2PicDie1.Image = picOneDot.Image 
Case 2 
      player2PicDie1.Image = picTwoDots.Image

...

Upvotes: 1

Chase Rocker
Chase Rocker

Reputation: 1908

You're creating 4 random numbers and assigning those to integer variables:

intPlayer1Num1 = intRandGen.Next(1, 7)
intPlayer1Num2 = intRandGen.Next(1, 7)
intPlayer2Num1 = intRandGen.Next(1, 7)
intplayer2Num2 = intRandGen.Next(1, 7)

So you should be using those integer variables in your Select Case statement and not your PictureBox variables. And you also had your picture images incorrect in your select case:

'display appropriate image in picDie1 for player one
Select Case intPlayer1Num1 
    Case 1
        Player1PicDie1.Image = picOneDot.Image
    Case 2
        Player1PicDie1.Image = picTwoDots.Image
    Case 3
        Player1PicDie1.Image = picThreeDots.Image
    Case 4
        Player1PicDie1.Image = picFourDots.Image
    Case 5
        Player1PicDie1.Image = picFiveDots.Image
    Case 6
        Player1PicDie1.Image = picSixDots.Image
End Select

'display appropriate image in picDie2 for player one
Select Case intPlayer1Num2 
    Case 1
        Player1PicDie2.Image = picOneDot.Image
    Case 2
        Player1PicDie2.Image = picTwoDots.Image
    Case 3
        Player1PicDie2.Image = picThreeDots.Image
    Case 4
        Player1PicDie2.Image = picFourDots.Image
    Case 5
        Player1PicDie2.Image = picFiveDots.Image
    Case 6
        Player1PicDie2.Image = picSixDots.Image
End Select

'display appropriate image in picDie1 for player two
Select Case intPlayer2Num1 
    Case 1
        player2PicDie1.Image = picOneDot.Image
    Case 2
        player2PicDie1.Image = picTwoDots.Image
    Case 3
        player2PicDie1.Image = picThreeDots.Image
    Case 4
        player2PicDie1.Image = picFourDots.Image
    Case 5
        player2PicDie1.Image = picFiveDots.Image
    Case 6
        player2PicDie1.Image = picSixDots.Image
End Select

'display appropriate image in picDie2 for player two
Select Case intplayer2Num2 
    Case 1
        Player2PicDie2.Image = picOneDot.Image
    Case 2
        Player2PicDie2.Image = picTwoDots.Image
    Case 3
        Player2PicDie2.Image = picThreeDots.Image
    Case 4
        Player2PicDie2.Image = picFourDots.Image
    Case 5
        Player2PicDie2.Image = picFiveDots.Image
    Case 6
        Player2PicDie2.Image = picSixDots.Image
End Select

Upvotes: 0

Related Questions