----------------------------------- krikor0322 Sun May 09, 2004 5:04 pm Another Problem ----------------------------------- Basically the problem here is im trying to display the number of correct and incorrect answers, but for some reason it wont display, also im trying to figure out how to set a time limit, for example 1 min 30sec for this, and when the time is up it would display a msgbox saying "time up" or something like that, thanks, this is Visual Basic 6.0 btw :) and also how would i be able to display the time left starting from 1min 30 sec in a txt box thanks again Dim correct As Integer Dim incorrect As Integer Private Sub cmdBack_Click() frmIntroduction.Show Unload Me End Sub Private Sub cmdCheck_Click() If Timer1.Enabled = False Then MsgBox "Click 'Go' to begin", , "Click 'Go'" ElseIf Image1.Visible = True Then Call one ElseIf Image2.Visible = True Then Call two ElseIf image3.Visible = True Then Call three ElseIf Image4.Visible = True Then Call four ElseIf Image5.Visible = True Then Call five ElseIf Image6.Visible = True Then Call six ElseIf Image7.Visible = True Then Call seven ElseIf Image8.Visible = True Then Call eight End If End Sub Private Sub cmdGo_Click() Timer1.Enabled = True Image1.Visible = True txtQuestion.Text = "(3^5) * (3^3) = 3^(5+3) = 3^8" txtAnswer.Text = " " End Sub Sub one() If txtAnswer.Text = 6561 Then correct = correct + 1 txtQuestion.Text = "(5^8) / (5^3) = 5^(5)" Image1.Visible = False Image2.Visible = True txtAnswer.Text = " " Else incorrect = incorrect + 1 MsgBox "(3^5) * (3^3) = 3^(5+3) = 3^8 = 6561" txtQuestion.Text = "(5^8) / (5^3) = 5^(5)" Image1.Visible = False Image2.Visible = True txtAnswer.Text = " " End If End Sub Sub two() If txtAnswer.Text = 3125 Then correct = correct + 1 txtQuestion.Text = "(4^3)^2 = 4^6" Image2.Visible = False image3.Visible = True txtAnswer.Text = " " Else incorrect = incorrect + 1 MsgBox "(5^8) / (5^3) = 5^(5) = 3125" txtQuestion.Text = "(4^3)^2 = 4^6" Image2.Visible = False image3.Visible = True txtAnswer.Text = " " End If End Sub Sub three() If txtAnswer.Text = 4096 Then correct = correct + 1 txtQuestion.Text = "(3*2)^2 = (3^2)*(2^2)" image3.Visible = False Image4.Visible = True txtAnswer.Text = " " Else incorrect = incorrect + 1 MsgBox "(4^3)^2 = 4^6 = 4096" txtQuestion.Text = "(3*2)^2 = (3^2)*(2^2)" image3.Visible = False Image4.Visible = True txtAnswer.Text = " " End If End Sub Sub four() If txtAnswer.Text = 36 Then correct = correct + 1 txtQuestion.Text = "(4/2) ^ 2 = (4^2) / (2^2)" Image4.Visible = False Image5.Visible = True txtAnswer.Text = " " Else incorrect = incorrect + 1 MsgBox "(3*2)^2 = (3^2)*(2^2) =36" txtQuestion.Text = "(4/2) ^ 2 = (4^2) / (2^2)" Image4.Visible = False Image5.Visible = True txtAnswer.Text = " " End If End Sub Sub five() If txtAnswer.Text = 4 Then correct = correct + 1 txtQuestion.Text = "4^0" Image5.Visible = False Image6.Visible = True txtAnswer.Text = " " Else incorrect = incorrect + 1 MsgBox "(4/2) ^ 2 = (4^2) / (2^2) = 4" txtQuestion.Text = "4^0" Image5.Visible = False Image6.Visible = True txtAnswer.Text = " " End If End Sub Sub six() If txtAnswer.Text = 1 Then correct = correct + 1 txtQuestion.Text = "(1/4)^ -2" Image6.Visible = False Image7.Visible = True txtAnswer.Text = " " Else incorrect = incorrect + 1 MsgBox "4^0 =1" txtQuestion.Text = "(1/4)^ -2" Image6.Visible = False Image7.Visible = True txtAnswer.Text = " " End If End Sub Sub seven() If txtAnswer.Text = 16 Then correct = correct + 1 txtQuestion.Text = "25^(3/2)" Image7.Visible = False Image8.Visible = True txtAnswer.Text = " " Else incorrect = incorrect + 1 MsgBox "(2/3) ^ -2 = (3/2) ^ 2" txtQuestion.Text = "25^(3/2)" Image7.Visible = False Image8.Visible = True txtAnswer.Text = " " End If End Sub Sub eight() If txtAnswer.Text = 125 Then correct = correct + 1 MsgBox "done" frmIntroduction.Show Unload Me Else incorrect = incorrect + 1 MsgBox "done" frmIntroduction.Show Unload Me End If End Sub Private Sub Form_Load() correct = txtCorrect.Text incorrect = txtIncorrect.Text End Sub ----------------------------------- Brightguy Tue May 11, 2004 11:24 pm Re: Another Problem ----------------------------------- Private Sub Timer1_Timer() Static lngTime As Long lngTime = lngTime + Timer1.Interval lblTime.Caption = lngTime / 1000 & " seconds" If lngTime >= 90000 Then Timer1.Enabled = False MsgBox "Time Up" End If End Sub Set Timer1.Interval to 1000 or something similar. That would be the easiest way to run the timer, but it's not perfect. (It wont time while the message boxes are up). A way to get around this would be to do something like this: Private dblTime As Double Private Sub Form_Load() dblTime = Timer End Sub Private Sub Timer1_Timer() lblTime.Caption = Round(Timer - dblTime, 1) & " seconds" If Timer - dblTime >= 90 Then Timer1.Enabled = False MsgBox "Time Up" End If End Sub You can set Timer1.Interval to as low as you want. There are other ways of cheating that code as well, and it'll mess up if the clock hits midnight. 8) But there are alternative ways of timing if you need something really accurate... And I browsed through your code, and I think you forgot to have the number of incorrect/correct answers being displayed. Just add something like this: txtCorrect.Text = correct txtIncorrect.Text = incorrect ----------------------------------- krikor0322 Wed May 12, 2004 6:51 am hey ----------------------------------- ya i figured out the score thing like 2 min after i posted lol, but i have another problem with this code, i need to have it in proper form, and that means no general declerations, i need to declare , correct, incorrect, and tries, in the command button and send it to the procedures, do you know how i can do that?? i gotta use byval or byref or something like that ----------------------------------- Brightguy Wed May 12, 2004 2:00 pm Re: hey ----------------------------------- Private Sub cmdCheck_Click() Static correct As Integer, incorrect As Integer, tries As Integer If Timer1.Enabled = False Then MsgBox "Click 'Go' to begin", , "Click 'Go'" ElseIf Image1.Visible = True Then Call one(correct, intcorrect, tries) ElseIf Image2.Visible = True Then Call two(correct, intcorrect, tries) ElseIf image3.Visible = True Then Call three(correct, intcorrect, tries) ElseIf Image4.Visible = True Then Call four(correct, intcorrect, tries) ElseIf Image5.Visible = True Then Call five(correct, intcorrect, tries) ElseIf Image6.Visible = True Then Call six(correct, intcorrect, tries) ElseIf Image7.Visible = True Then Call seven(correct, intcorrect, tries) ElseIf Image8.Visible = True Then Call eight(correct, intcorrect, tries) End If End Sub And you would declare your procedures like this: Sub one(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) You wouldn't actually have to put the 'ByRef' in there because it's passed that way automatically. Passing a variable ByRef passes the actual variable, while using ByVal creates a new memory location and a copy of the variable is passed. ----------------------------------- krikor0322 Wed May 12, 2004 4:17 pm Okay ----------------------------------- Now that i got that working... I need access to those variables in the formload and another command button... how would i send it from the command button in which they are declared in... to the formload and the other command button.... ----------------------------------- Tony Wed May 12, 2004 4:26 pm ----------------------------------- you might want to make it a global varaible then. Otherwise you could decleara them as public and you should be able to access them as a method. cmd_myButton.myVariable ----------------------------------- krikor0322 Wed May 12, 2004 4:30 pm Wellll ----------------------------------- See im supposed to code according to what weve learned in the class is there a way i can send the variables to the procedure the command button calls... ??? and also... i was told i need to take the questions and answers from a text box instead of writing the answer and question in the code.. is there anyway thats possible? by the way the code below doesnt work 100% notice at the bottom... Private Sub cmdStop_Click() Call stopme(correct, incorrect, tries) End Sub :P i love this place Private Sub cmdBack_Click() frmIntroduction.Show Unload Me End Sub Private Sub cmdCheck_Click() Static correct As Integer, incorrect As Integer, tries As Integer txtCorrect.Text = correct txtIncorrect.Text = incorrect txtTries.Text = tries imgGoodJOb.Visible = False imgNextTime.Visible = False If Timer1.Enabled = False Then MsgBox "Click 'Go' to begin", , "Click 'Go'" ElseIf Image1.Visible = True Then tries = tries + 1 txtTries.Text = tries Call one(correct, incorrect, tries) ElseIf Image2.Visible = True Then tries = tries + 1 txtTries.Text = tries Call two(correct, incorrect, tries) ElseIf image3.Visible = True Then tries = tries + 1 txtTries.Text = tries Call three(correct, incorrect, tries) ElseIf Image4.Visible = True Then tries = tries + 1 txtTries.Text = tries Call four(correct, incorrect, tries) ElseIf Image5.Visible = True Then tries = tries + 1 txtTries.Text = tries Call five(correct, incorrect, tries) ElseIf Image6.Visible = True Then tries = tries + 1 txtTries.Text = tries Call six(correct, incorrect, tries) ElseIf Image7.Visible = True Then tries = tries + 1 txtTries.Text = tries Call seven(correct, incorrect, tries) ElseIf Image8.Visible = True Then tries = tries + 1 txtTries.Text = tries Call eight(correct, incorrect, tries) ElseIf Image9.Visible = True Then tries = tries + 1 txtTries.Text = tries Call nine(correct, incorrect, tries) End If End Sub Private Sub cmdGo_Click() Timer1.Enabled = True txtAnswer.Locked = False Image1.Visible = True txtQuestion.Text = "(3^5) * (3^3)" cmdGo.Enabled = False End Sub Sub one(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 6561 Then correct = correct + 1 txtCorrect.Text = correct txtQuestion.Text = "(5^8) / (5^3)" Image1.Visible = False Image2.Visible = True imgGoodJOb.Visible = True txtAnswer.Text = 0 ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "(3^5) * (3^3) = 3^(5+3) = 3^8 = 6561", , "The Correct Answer Is" txtQuestion.Text = "(5^8) / (5^3)" Image1.Visible = False Image2.Visible = True imgNextTime.Visible = True txtAnswer.Text = 0 End If End Sub Sub two(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 3125 Then imgGoodJOb.Visible = True correct = correct + 1 txtCorrect.Text = correct txtQuestion.Text = "(4^3)^2" Image2.Visible = False image3.Visible = True txtAnswer.Text = 0 ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "(5^8) / (5^3) = 5^(5) = 3125", , "The Correct Answer Is" txtQuestion.Text = "(4^3)^2" Image2.Visible = False image3.Visible = True imgNextTime.Visible = True txtAnswer.Text = 0 End If End Sub Sub three(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 4096 Then correct = correct + 1 txtCorrect.Text = correct txtQuestion.Text = "(3*2)^2" image3.Visible = False Image4.Visible = True imgGoodJOb.Visible = True txtAnswer.Text = 0 ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "(4^3)^2 = 4^6 = 4096", , "The Correct Answer Is" txtQuestion.Text = "(3*2)^2" image3.Visible = False Image4.Visible = True imgNextTime.Visible = True txtAnswer.Text = 0 End If End Sub Sub four(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 36 Then correct = correct + 1 txtCorrect.Text = correct txtQuestion.Text = "(4/2) ^ 2" Image4.Visible = False Image5.Visible = True imgGoodJOb.Visible = True txtAnswer.Text = 0 ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "(3*2)^2 = (3^2)*(2^2) =36", , "The Correct Answer Is" txtQuestion.Text = "(4/2) ^ 2" Image4.Visible = False Image5.Visible = True imgNextTime.Visible = True txtAnswer.Text = 0 End If End Sub Sub five(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 4 Then correct = correct + 1 txtCorrect.Text = correct txtQuestion.Text = "4^0" Image5.Visible = False Image6.Visible = True imgGoodJOb.Visible = True txtAnswer.Text = 0 ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "(4/2) ^ 2 = (4^2) / (2^2) = 4", , "The Correct Answer Is" txtQuestion.Text = "4^0" Image5.Visible = False Image6.Visible = True imgNextTime.Visible = True txtAnswer.Text = 0 End If End Sub Sub six(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 1 Then correct = correct + 1 txtCorrect.Text = correct txtQuestion.Text = "(1/4)^ -2" Image6.Visible = False Image7.Visible = True imgGoodJOb.Visible = True txtAnswer.Text = 0 ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "4^0 =1", , "The Correct Answer Is" txtQuestion.Text = "(1/4)^ -2" Image6.Visible = False Image7.Visible = True imgNextTime.Visible = True txtAnswer.Text = 0 End If End Sub Sub seven(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 16 Then correct = correct + 1 txtCorrect.Text = correct txtQuestion.Text = "25^(3/2)" Image7.Visible = False Image8.Visible = True imgGoodJOb.Visible = True txtAnswer.Text = 0 ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "(2/3) ^ -2 = (3/2) ^ 2", , "The Correct Answer Is" txtQuestion.Text = "25^(3/2)" Image7.Visible = False Image8.Visible = True imgNextTime.Visible = True txtAnswer.Text = 0 End If End Sub Sub eight(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 125 Then correct = correct + 1 txtCorrect.Text = correct txtQuestion.Text = "(5^2) * (5^3)" Image8.Visible = False Image9.Visible = True imgGoodJOb.Visible = True txtAnswer.Text = 0 ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "25^(3/2) = 125", , "The Correct Answer Is" txtQuestion.Text = "(5^2) * (5^3)" Image8.Visible = False Image9.Visible = True imgNextTime.Visible = True txtAnswer.Text = 0 End If End Sub Sub nine(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) If txtAnswer.Text = 3125 Then correct = correct + 1 txtCorrect.Text = correct imgGoodJOb.Visible = True MsgBox "You got " & correct & " correct, and " & incorrect & " incorrect", , "Good Job!" frmIntroduction.Show Unload Me ElseIf txtAnswer.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Else incorrect = incorrect + 1 txtIncorrect.Text = incorrect MsgBox "(5^2) * (5^3) = 3125", , "The Correct Answer Is" imgNextTime.Visible = True MsgBox "You got " & correct & " correct, and " & incorrect & " incorrect out of " & tries & " tries", , "Good Job!" frmIntroduction.Show Call endme(correct, incorrect, tries) End If End Sub Private Sub cmdStop_Click() Call stopme(correct, incorrect, tries) End Sub Private Sub Form_Load() txtAnswer.Locked = True End Sub Sub endme(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) correct = 0 incorrect = 0 tries = 0 txtCorrect.Text = 0 txtIncorrect.Text = 0 txtTries.Text = 0 Unload Me End Sub Sub stopme(ByRef correct As Integer, ByRef incorrect As Integer, ByRef tries As Integer) MsgBox "You got " & correct & " correct, and " & incorrect & " incorrect out of " & tries & " tries", , "Play Again Later!" Unload Me End Sub ----------------------------------- Brightguy Thu May 13, 2004 11:08 pm Re: Wellll ----------------------------------- Tony: You can't do that with procedures so far as I know. Also you would only use Public if you had multiple modules. krikor: I'd recommend loading the questions and answers from an external text file. That way you'd only need one procedure to check the answer and record the points. Also, you can't pass your own variables to event procedures. If they need access to a variable, then declare it as global. Just ask if you need help loading the questions from a file. ----------------------------------- Brightguy Mon May 17, 2004 5:07 pm Re: yes!! ----------------------------------- Alright, here's some basic code which loads the questions & answers from a text file. I didn't add in all the options from your code, but this should show you how it's basically done. Place a label, command button, and a text box on a form to try it out. I made a text file of your questions so you can test it out (place in same directory). The first field is the question itself, the second field is the answer shown, and the third field is the actual answer. By the way... check the shown answer in question #7. Private strAnswer As String, intAnswer As Integer Private intFileNum As Integer Private Sub Command1_Click() If Text1.Text = 0 Then MsgBox "Oops! you forgot your answer", , "Enter An Answer!" Exit Sub ElseIf Text1.Text = intAnswer Then MsgBox "Correct!" Else MsgBox strAnswer, , "The Correct Answer Is" End If Call DisplayQuestion End Sub Private Sub Form_Load() intFileNum = FreeFile Open App.Path & "\Questions.txt" For Input As #intFileNum Call DisplayQuestion End Sub Private Sub Form_Unload(Cancel As Integer) Close #intFileNum End Sub Private Sub DisplayQuestion() Dim strQuestion As String If EOF(intFileNum) = False Then Input #intFileNum, strQuestion, strAnswer, intAnswer Label1.Caption = strQuestion Else MsgBox "Quiz complete." Label1.Caption = Empty Command1.Enabled = False End If Text1.Text = 0 End Sub ----------------------------------- krikor0322 Mon May 17, 2004 6:44 pm humm ----------------------------------- what format should the text be in?? can you post the exact way u have the questions typed in the text thanx ----------------------------------- Brightguy Mon May 17, 2004 7:55 pm Re: humm ----------------------------------- Yeah, just download the Questions.txt file I attached in my previous post. :wink: ----------------------------------- krikor0322 Thu May 20, 2004 11:45 am uhhh ----------------------------------- that works amazingly thanks alot... BUTTT i need to add the time aspect.. how would i do that??? so in 1 min the game ends.. basically u have 1 min to answer the questions ----------------------------------- Tony Thu May 20, 2004 12:41 pm ----------------------------------- you create a timer with 60000 millisecond interval. After 60 seconds, timer event will be called and you place your "game over" code in there. Or you could make interval 1000 and keep a counter of seconds left.