Intro to VB

need to change colors in labels

Page 1 of 1

1 Replies - 1104 Views - Last Post: 19 July 2008 - 12:41 PM Rate Topic: -----

#1 cckmm2407  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 5
  • Joined: 19-July 08

Intro to VB

Post icon  Posted 19 July 2008 - 12:15 PM

I've coded a program called Concentration Game from the source technologies website's chapter 7 entry. The textbook, VB2005 reloaded, assignment requires us to change the BackColor when 2 items are matched. I've got that figured out, and even put in an else statement turning the color red for a mismatch. I'd like to (as I think the assignment requests) change the BackColor to a different color for each match. I've tried an embeded IfThenElse, but the code is set up for two conditions...firstLabel and secondLabel.
I'm not sure where to go from here. I think it's got to be another IfThenElse, or even a Select, but how do I make it determine that the user is on another set of matches?

Entire Code is...

Option Explicit On
Option Strict On

Public Class MainForm

    Private firstLabel As Label
    Private secondLabel As Label
    Private selectionCounter As Integer

    Private Sub ShuffleWords()
        ' shuffles the words in the list box

        Dim randomGenerator As New Random
        Dim index1 As Integer
        Dim index2 As Integer
        Dim temp As String

        For counter As Integer = 1 To 16
            ' generate two random numbers
            index1 = randomGenerator.Next(0, 16)
            index2 = randomGenerator.Next(0, 16)
            ' swap the two words
            temp = wordListBox.Items(index1).ToString
            wordListBox.Items(index1) = wordListBox.Items(index2)
            wordListBox.Items(index2) = temp
        Next counter

        If selectionCounter = 16 Then
            MessageBox.Show("Game Over.", _
            "Concentration Game", MessageBoxButtons.OK, _
             MessageBoxIcon.Information)
        End If
    End Sub

    Private Sub MainForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' fills the list box with 8 pairs of matching words, 
        ' then calls a procedure to shuffle the words

        wordListBox.Items.Add("Refrigerator")
        wordListBox.Items.Add("Range")
        wordListBox.Items.Add("Television")
        wordListBox.Items.Add("Computer")
        wordListBox.Items.Add("Washer/Dryer")
        wordListBox.Items.Add("Dishwasher")
        wordListBox.Items.Add("Car")
        wordListBox.Items.Add("Trip")
        wordListBox.Items.Add("Refrigerator")
        wordListBox.Items.Add("Range")
        wordListBox.Items.Add("Television")
        wordListBox.Items.Add("Computer")
        wordListBox.Items.Add("Washer/Dryer")
        wordListBox.Items.Add("Dishwasher")
        wordListBox.Items.Add("Car")
        wordListBox.Items.Add("Trip")

        Call ShuffleWords()

    End Sub

    Private Sub exitButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles exitButton.Click
        Me.Close()
    End Sub

    Private Sub newButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles newButton.Click
        ' removes any words from the label controls, then
        ' enables the label controls, then resets the 
        ' selection counter, and then calls a procedure
        ' to shuffle the words

        Label1.Text = String.Empty
        Label2.Text = String.Empty
        Label3.Text = String.Empty
        Label4.Text = String.Empty
        Label5.Text = String.Empty
        Label6.Text = String.Empty
        Label7.Text = String.Empty
        Label8.Text = String.Empty
        Label9.Text = String.Empty
        Label10.Text = String.Empty
        Label11.Text = String.Empty
        Label12.Text = String.Empty
        Label13.Text = String.Empty
        Label14.Text = String.Empty
        Label15.Text = String.Empty
        Label16.Text = String.Empty

        Label1.Enabled = True
        Label2.Enabled = True
        Label3.Enabled = True
        Label4.Enabled = True
        Label5.Enabled = True
        Label6.Enabled = True
        Label7.Enabled = True
        Label8.Enabled = True
        Label9.Enabled = True
        Label10.Enabled = True
        Label11.Enabled = True
        Label12.Enabled = True
        Label13.Enabled = True
        Label14.Enabled = True
        Label15.Enabled = True
        Label16.Enabled = True

        Label1.BackColor = Color.Silver
        Label2.BackColor = Color.Silver
        Label3.BackColor = Color.Silver
        Label4.BackColor = Color.Silver
        Label5.BackColor = Color.Silver
        Label6.BackColor = Color.Silver
        Label7.BackColor = Color.Silver
        Label8.BackColor = Color.Silver
        Label9.BackColor = Color.Silver
        Label10.BackColor = Color.Silver
        Label11.BackColor = Color.Silver
        Label12.BackColor = Color.Silver
        Label13.BackColor = Color.Silver
        Label14.BackColor = Color.Silver
        Label15.BackColor = Color.Silver
        Label16.BackColor = Color.Silver
        selectionCounter = 0
        Call ShuffleWords()

    End Sub

    Private Sub TestForMatch(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.Click, _
        Label2.Click, Label3.Click, Label4.Click, Label5.Click, Label6.Click, Label7.Click, _
        Label8.Click, Label9.Click, Label10.Click, Label11.Click, Label12.Click, Label13.Click, _
        Label14.Click, Label15.Click, Label16.Click
        ' displays the appropriate words, and determines whether
        ' the user selected a matching pair of words
        Dim labelNum As String
        Dim index1 As Integer
        Dim index2 As Integer

        ' update the selection counter

        selectionCounter = selectionCounter + 1

        ' determine whether this is the first or second selection
        If selectionCounter = 1 Then
            ' if this is the first label, extract the number from
            ' the label's name, then use the number to display the 
            ' appropriate word from the list box
            firstLabel = TryCast(sender, Label)
            labelNum = firstLabel.Name.Substring(5)
            index1 = Convert.ToInt32(labelNum) - 1
            firstLabel.Text = wordListBox.Items(index1).ToString

        Else
            ' this is the second label, so diable the game board,
            ' then extract the number from the labels name, then
            ' use the number to display the appropriate word from 
            ' the list box
            boardTableLayoutPanel.Enabled = False
            secondLabel = TryCast(sender, Label)
            labelNum = secondLabel.Name.Substring(5)
            index2 = Convert.ToInt32(labelNum) - 1
            secondLabel.Text = wordListBox.Items(index2).ToString

            ' if both words match, disable corresponding
            ' label controls, then turn on matchTimer;
            ' otherwise, turn on the matchTimer
            If firstLabel.Text = secondLabel.Text Then
                firstLabel.Enabled = False
                secondLabel.Enabled = False
                matchTimer.Enabled = True
            Else
                noMatchTimer.Enabled = True
            End If
            If firstLabel.Text = secondLabel.Text Then
                firstLabel.BackColor = Color.LightGreen
                secondLabel.BackColor = Color.LightGreen
            Else : firstLabel.BackColor = Color.Red
                secondLabel.BackColor = Color.Red
            End If

            ' reset the selection counter
            selectionCounter = 0
        End If

        ' Label1.BackColor = Color.Blue

    End Sub
    Private Sub matchTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles matchTimer.Tick
        ' when the two words match, the game board is enabled
        ' and the timer is turned off
        boardTableLayoutPanel.Enabled = True
        matchTimer.Enabled = False
    End Sub
    Private Sub noMatchTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles noMatchTimer.Tick
        ' when the words do not match, the words are
        ' removed from the labels, the game board is enabled,
        ' and the timer is turned off
        firstLabel.Text = String.Empty
        secondLabel.Text = String.Empty
        boardTableLayoutPanel.Enabled = True
        noMatchTimer.Enabled = False
    End Sub
End Class



Mod Edit: Please use code tags when posting your code. Code tags are used like so => :code:

Thanks,
PsychoCoder :)

Is This A Good Question/Topic? 0
  • +

Replies To: Intro to VB

#2 PsychoCoder  Icon User is offline

  • Google.Sucks.Init(true);
  • member icon

Reputation: 1641
  • View blog
  • Posts: 19,853
  • Joined: 26-July 07

Re: Intro to VB

Posted 19 July 2008 - 12:41 PM

Moved to VB.NET :)
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1