Newbie - If then problem

cherenee

Member
Joined
Apr 15, 2007
Messages
6
Programming Experience
Beginner
I am way new to this but I have to create a 4x4 grid of Tic Tac Toe. When one button is clicked on the color should change and then the computer generated move should change the button color also. So far this is what I have:

VB.NET:
Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) [B]Handles[/B] Button1.Click, Button2.Click, _
Button3.Click, Button4.lick, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click, _
Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button15.Click, Button16.Click
Dim Randomnum =(Int(Int(Rnd()*16+1)))
If Randomnum = 1 Then Button1.BackColor = Color.Red
ElseIf Randomnum = 2 Then Button2.BackColor = Color.Blue
ElseIf Randomnum = 3 Then Button3.BackColor = Color.Purple
ElseIf Randomnum = 4 Then Button4.BackColor = Color.Orange
I get a Compile Error. Expected: End of Statemant on Handles and on my laptop I get ElseIf must be preceded by a matching IF or ElseIf.

What am I doing wrong?:confused:
 
VB.NET:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, _
    Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click, _
    Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button15.Click, Button16.Click
        Dim Randomnum = (Int(Int(Rnd() * 16 + 1)))
        If Randomnum = 1 Then
            Button1.BackColor = Color.Red
        ElseIf Randomnum = 2 Then
            Button2.BackColor = Color.Blue
        ElseIf Randomnum = 3 Then
            Button3.BackColor = Color.Purple
        ElseIf Randomnum = 4 Then
            Button4.BackColor = Color.Orange
        End If
    End Sub
 
Thank you!!!!!!!!!! I have some other questions if you don't mind. On my game I really only want to use two colors (red, blue) that will indicate the human player and the computer. There won't be an X or an O just the color change on the button. Can I take this code and use it like this:
If Button1 = "blue" And Button6 = "" Then
Button6.BackColor = "color.red"

If I use this would I then still need to use the Randomnum if then statements?
 
Could always use a Select Case instead of all those ElseIf statements:
VB.NET:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, _
      Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click, _
      Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button15.Click, Button16.Click
        Dim RandClass As New Random
        Select Case CInt(RandClass.Next(0, 17 '16 + 1))
          Case 1: Button1.BackColor = Color.Red
          Case 2: Button2.BackColor = Color.Blue
          Case 3: Button3.BackColor = Color.Purple
          Case 4: Button4.BackColor = Color.Orange
        End Select
    End Sub
And to answer your other question, yes you can do it similar to that:
VB.NET:
If Button1.backColor = Color.Blue AndAlso Button6.Text = "" Then Button6.BackColor = Color.Red
 
Here is what I have so far. Question: How do I generate an automatic reponse from the computer that corresponds to a move I would make manually?

VB.NET:
Public Class TicTacTechno
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, _
Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click, _
Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button15.Click, Button16.Click
Dim Randomnum = (Int(Int(Rnd() * 16 + 1)))
If sender.text = "" Then
sender.backcolor = Color.Blue
End If
If Randomnum = 1 Then
Button1.BackColor = Color.Blue
ElseIf Randomnum = 2 Then
Button2.BackColor = Color.Red
ElseIf Randomnum = 3 Then
Button3.BackColor = Color.Purple
ElseIf Randomnum = 4 Then
Button4.BackColor = Color.Green
ElseIf Randomnum = 5 Then
Button5.BackColor = Color.Blue
ElseIf Randomnum = 6 Then
Button6.BackColor = Color.Purple
ElseIf Randomnum = 7 Then
Button7.BackColor = Color.Green
ElseIf Randomnum = 8 Then
Button8.BackColor = Color.Blue
ElseIf Randomnum = 9 Then
Button9.BackColor = Color.Purple
ElseIf Randomnum = 10 Then
Button10.BackColor = Color.Green
ElseIf Randomnum = 11 Then
Button11.BackColor = Color.Blue
ElseIf Randomnum = 12 Then
Button12.BackColor = Color.Purple
ElseIf Randomnum = 13 Then
Button13.BackColor = Color.Green
ElseIf Randomnum = 14 Then
Button14.BackColor = Color.Blue
ElseIf Randomnum = 15 Then
Button15.BackColor = Color.Purple
ElseIf Randomnum = 16 Then
Button16.BackColor = Color.Green
End If
If Button1.BackColor = Color.Blue AndAlso Button6.Text = "" Then
Button6.BackColor = Color.Red
ElseIf Button1.BackColor = Color.Blue AndAlso Button6.BackColor = Color.Red AndAlso Button7.Text = "" Then
Button7.BackColor = Color.Red
ElseIf Button1.BackColor = Color.Blue AndAlso Button7.BackColor = Color.Blue AndAlso Button8.Text = "" Then
Button8.BackColor = Color.Red
ElseIf Button1.BackColor = Color.Blue AndAlso Button8.BackColor = Color.Blue AndAlso Button9.Text = "" Then
Button9.BackColor = Color.Red
ElseIf Button1.BackColor = Color.Blue AndAlso Button9.BackColor = Color.Blue AndAlso Button10.Text = "" Then
Button10.BackColor = Color.Red
End If
 
End Sub
Private Sub TicTacTechno_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
 
Last edited by a moderator:
Back
Top