Öppna ett nytt Visual Basic-projekt. Lägg till två etiketter, tre alternativknappar och två knappkontroller i formuläret. Dra de två etiketterna till toppen med Label1 ovanpå Label2. Dra RadioButton1, RadioButton2 och RadioButton3 för att rada upp vertikalt under etiketterna. Dra de två knapparna under radioknapparna med knapp 1 till vänster och knapp 2 till höger.
Den första raden skapar en tvådimensionell array. Den första dimensionen är för varje fråga och den andra dimensionen är för själva frågan, tre svarsval och rätt svar. Den andra raden skapar en array för att lagra användarens svar. Den tredje raden skapar en räknarvariabel som håller reda på frågan som användaren står på.
Private Sub GetQuestions() question = New String(,) {{"Hur många färger finns i en regnbåge?", "5", "6", "7", "7"}, {"Vem spelade huvudrollen i Pirates of the Caribbean?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, {"Vad är huvudstaden i Florida?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub
Denna subrutin initierar helt enkelt de tre frågorna och svaren i frågefältet. Du kan lägga till ytterligare frågor eller få dem på andra sätt, till exempel genom en textfil, men om du gör, kom ihåg att ändra storleken på fråge- och svarsmatriserna för att ta emot antalet frågor.
Privat Sub MarkTest() Dim betyg Som heltal = 0 För i = 0 Till 2 Om svar (i) = frågor (i, 4) Då betyg += 1 End If Next Label1.Text = "Test avslutat!" Label2.Text = "Du fick " & betyg & " av " & svarar. Längd & "!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub
Den första raden deklarerar en subrutin som markerar testet. Den skapar en lokal variabel för att räkna poängen och bläddrar sedan igenom svaren i frågefältet och svaren som lämnats in av användaren. För varje svar som matchar går betyget upp med ett. Den visar sedan poängen i etiketterna och inaktiverar resten av kontrollerna.
Mig. Text = "Mitt flervalsquiz!" GetQuestions() quesNum = 1 Label1.Text = "Fråga " & quesNum & " av " & svar. Length Label2.Text = frågor (0, 0) Button1.Text = "Föregående" Button2.Text = "Nästa" RadioButton1.Text = frågor (0, 1) RadioButton2.Text = frågor (0, 2) RadioButton3.Text = frågor (0, 3)
Den första raden anger titeln i namnlisten. Nästa rad anropar GetQuestions()-subrutinen. Den tredje raden initierar frågetäknarvariabeln. Den fjärde raden visar vilket frågenummer användaren står på. Den femte raden visar fråga ett i etiketten. Den sjätte och sjunde raden ändrar texten för de två knapparna. De sista tre raderna infogar de tre flervalssvaren som text för de tre alternativknapparna.
Om quesNum > 1 Då quesNum -= 1 Label1.Text = "Fråga " & quesNum & " av 3" Label2.Text = frågor (quesNum - 1, 0) RadioButton1.Text = frågor (quesNum - 1, 1) RadioButton2.Text = frågor (quesNum - 1, 2) RadioButton3.Text = frågor (quesNum - 1, 3) If Button2.Text = "Submit" Then Button2.Text = "Next" End If End If
Detta är koden för knappen "Föregående". Den kontrollerar först om användaren tryckte på knappen när han redan svarade på den första frågan. Om inte, minskar den frågeräknaren med ett och uppdaterar texten för etiketterna och alternativknapparna för att visa föregående fråga. Om användaren stod på den sista frågan ändras texten på Button2 från "Skicka" tillbaka till "Nästa".
If RadioButton1.Checked = True Then answers (quesNum - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Then answers (quesNum - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = True Då svarar (quesNum - 1) = RadioButton3.Text End If RadioButton1.Focus() If quesNum < 3 Then quesNum += 1 Label1.Text = "Fråga " & quesNum & " av " & svarar. Length Label2.Text = frågor (quesNum - 1, 0) RadioButton1.Text = frågor (quesNum - 1, 1) RadioButton2.Text = frågor (quesNum - 1, 2) RadioButton3.Text = frågor (quesNum - 1, 3) If quesNum = 3 Then Button2.Text = "Submit" End If Else MarkTest() Avsluta om
Detta är koden för "Nästa"-knappen. De första sju raderna kontrollerar vilken alternativknapp användaren har valt, och sparar sedan svaret i svarsfältet. Nästa rad fokuserar valet av alternativknappar på RadioButton1. Nästa rad kontrollerar att användaren inte är på den sista frågan. Om detta är sant, ökar den frågeräknaren med en och uppdaterar etiketterna och alternativknapparna för att visa nästa fråga. Den kontrollerar sedan om användaren nu är på den sista frågan. Om så är fallet ändras texten för Nästa-knappen från "Nästa" till "Skicka". Om användaren redan var på sista frågan och klickade på "Skicka" anropar programmet funktionen "MarkTest" för att få användarens poäng.