Solved

I need to re-populate board after all buttons have been selected.

Posted on 2008-10-15
7
219 Views
Last Modified: 2010-04-23
I've created a Jeopardy style game. What I need to do is re-populate the board of buttons with new questions once all the questions have been answered. When a button has been selected, the text is changed to " ". I've created a function to check if all the button text is blank but it doesn't seem to be calling for the next round of questions. Can anyone see what is wrong?
~TIA
Friend Function roundOver(ByVal sRoundOver As String) As Boolean

        Dim ctrl As Control

        Dim bRoundOver As Boolean = True

        For Each ctrl In Me.Controls

            If TypeOf ctrl Is Button And ctrl.Text = "" = True Then

                bRoundOver = False

                Exit For

            End If

        Next ctrl

    End Function
 

If bRoundOver = True Then

            'hook up array

            arrCol1(0) = btn1200

            arrCol1(1) = btn1400

            arrCol1(2) = btn1600

            arrCol1(3) = btn1800

            arrCol1(4) = btn11000
 

            arrCol2(0) = btn2200

            arrCol2(1) = btn2400

            arrCol2(2) = btn2600

            arrCol2(3) = btn2800

            arrCol2(4) = btn21000
 

            arrCol3(0) = btn3200

            arrCol3(1) = btn3400

            arrCol3(2) = btn3600

            arrCol3(3) = btn3800

            arrCol3(4) = btn31000
 

            arrCol4(0) = btn4200

            arrCol4(1) = btn4400

            arrCol4(2) = btn4600

            arrCol4(3) = btn4800

            arrCol4(4) = btn41000
 

            arrCol5(0) = btn5200

            arrCol5(1) = btn5400

            arrCol5(2) = btn5600

            arrCol5(3) = btn5800

            arrCol5(4) = btn51000
 

            arrCol6(0) = btn6200

            arrCol6(1) = btn6400

            arrCol6(2) = btn6600

            arrCol6(3) = btn6800

            arrCol6(4) = btn61000
 

            dtCategories = oBoard.GetCategories
 

            txtCat1.Text = dtCategories.Rows(0).Item(1)

            txtCat2.Text = dtCategories.Rows(1).Item(1)

            txtCat3.Text = dtCategories.Rows(2).Item(1)

            txtCat4.Text = dtCategories.Rows(3).Item(1)

            txtCat5.Text = dtCategories.Rows(4).Item(1)

            txtCat6.Text = dtCategories.Rows(5).Item(1)
 

            For x = 0 To 5

                oBoard.Used(dtCategories.Rows(x).Item(0))

            Next

            For x = 0 To 4

                arrCol1(x).Text = ("$" & (x + 1) * 200)

                arrCol2(x).Text = ("$" & (x + 1) * 200)

                arrCol3(x).Text = ("$" & (x + 1) * 200)

                arrCol4(x).Text = ("$" & (x + 1) * 200)

                arrCol5(x).Text = ("$" & (x + 1) * 200)

                arrCol6(x).Text = ("$" & (x + 1) * 200)

                My.Computer.Audio.Play("BoardFill.wav")

            Next

            m_Categories = dtCategories

            Me.Show()

        Else

            arrCol1(0) = btn1200

            arrCol1(1) = btn1400

            arrCol1(2) = btn1600

            arrCol1(3) = btn1800

            arrCol1(4) = btn11000
 

            arrCol2(0) = btn2200

            arrCol2(1) = btn2400

            arrCol2(2) = btn2600

            arrCol2(3) = btn2800

            arrCol2(4) = btn21000
 

            arrCol3(0) = btn3200

            arrCol3(1) = btn3400

            arrCol3(2) = btn3600

            arrCol3(3) = btn3800

            arrCol3(4) = btn31000
 

            arrCol4(0) = btn4200

            arrCol4(1) = btn4400

            arrCol4(2) = btn4600

            arrCol4(3) = btn4800

            arrCol4(4) = btn41000
 

            arrCol5(0) = btn5200

            arrCol5(1) = btn5400

            arrCol5(2) = btn5600

            arrCol5(3) = btn5800

            arrCol5(4) = btn51000
 

            arrCol6(0) = btn6200

            arrCol6(1) = btn6400

            arrCol6(2) = btn6600

            arrCol6(3) = btn6800

            arrCol6(4) = btn61000
 

            dtCategories = oBoard.GetCategories
 

            txtCat1.Text = dtCategories.Rows(0).Item(1)

            txtCat2.Text = dtCategories.Rows(1).Item(1)

            txtCat3.Text = dtCategories.Rows(2).Item(1)

            txtCat4.Text = dtCategories.Rows(3).Item(1)

            txtCat5.Text = dtCategories.Rows(4).Item(1)

            txtCat6.Text = dtCategories.Rows(5).Item(1)
 

            For x = 0 To 5

                oBoard.Used(dtCategories.Rows(x).Item(0))

            Next

            For x = 0 To 4

                arrCol1(x).Text = ("$" & (x + 1) * 400)

                arrCol2(x).Text = ("$" & (x + 1) * 400)

                arrCol3(x).Text = ("$" & (x + 1) * 400)

                arrCol4(x).Text = ("$" & (x + 1) * 400)

                arrCol5(x).Text = ("$" & (x + 1) * 400)

                arrCol6(x).Text = ("$" & (x + 1) * 400)

                My.Computer.Audio.Play("BoardFill.wav")

            Next

            m_Categories = dtCategories

            Me.Show()

        End If

    End Sub
 

    Private Sub btnCol1_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1200.Click, btn1400.Click, btn1600.Click, btn1800.Click, btn11000.Click
 

        m_sender = Strings.Right(sender.tag, 1)

        icolumn = Strings.Left(sender.tag, 1) - 1

        irow = Strings.Right(sender.tag, 1) - 1
 

        temp = (m_sender * 200)
 

        'hook up array

        Dim frmQ As New frmQuestion

        vwQuestion.RowFilter = "CategoryID = '" & CStr(m_Categories.Rows(icolumn).Item("CategoryID")).Replace("'", "\'") & "'"

        frmQ.Question = vwQuestion.ToTable.Rows(irow).Item(2)

        frmQ.Answer1 = vwQuestion.ToTable.Rows(irow).Item(3)

        frmQ.Answer2 = vwQuestion.ToTable.Rows(irow).Item(4)

        frmQ.Answer3 = vwQuestion.ToTable.Rows(irow).Item(5)

        frmQ.Answer4 = vwQuestion.ToTable.Rows(irow).Item(6)

        frmQ.CorrectAnswer = vwQuestion.ToTable.Rows(irow).Item(7)
 

        Dim btn As Button = DirectCast(sender, Button)

        btn.Text = ""

        btn.Enabled = False
 

        iResult = frmQ.ShowDialog()

        If iResult = 1 Then

            Score = Score + temp

        Else

            Score = Score - temp

        End If

        lblScore.Text = Score

        Call roundOver(bRoundOver)
 

    End Sub

Open in new window

0
Comment
Question by:98fatboyrider
  • 3
  • 2
  • 2
7 Comments
 
LVL 8

Expert Comment

by:rlh68
ID: 22727322

In your RoundOver method try changing this...

  If TypeOf ctrl Is Button And ctrl.Text = "" = True Then
                bRoundOver = False
                Exit For
            End If

to this...

  If TypeOf ctrl Is Button And ctrl.Text = "" Then
                bRoundOver = False
                Exit For
            End If
0
 
LVL 8

Expert Comment

by:rlh68
ID: 22727349

Also you are missing some code, however I am guessing you just mistakenly forgot to post part of your code. Your RoundOver method ends and the next bit of code starts with 'If bRoundOver = True Then' and this code ends with an End Sub.
0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 22727367
If you find a Button that is not " " then the round isn't over...because you have questions left right?

    Friend Function RoundIsOver() As Boolean
        For Each ctrl As Control In Me.Controls
            If TypeOf ctrl Is Button AndAlso ctrl.Text <> " " Then
                Return False
            End If
        Next
        Return True
    End Function

Call it like this:

    If RoundIsOver() Then
        ...
    End If
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 8

Expert Comment

by:rlh68
ID: 22727381
oops, yes check <> "" as Idle_Mind suggests.
0
 

Author Comment

by:98fatboyrider
ID: 22727732
Thanks, I think I almost have it now, but how do I check to see if all the buttons are " " after each one is selected?
0
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 22728368
Huh?...the RoundIsOver() function I gave you will return TRUE if all the buttons are " "...otherwise it returns False.

So just call the RoundIsOver() function in the Click() handler of the buttons or from where ever you execute code after a question is answered.
0
 

Author Closing Comment

by:98fatboyrider
ID: 31506577
Thank you.
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now