Cada pergunta em um teste de múltipla escolha consiste em uma pergunta em si e várias respostas diferentes, das quais apenas uma é correta. Você pode criar um teste de múltipla escolha no Visual Basic usando rótulos para exibir as perguntas, botões de opção para as respostas possíveis e controles de botão para navegar entre as diferentes perguntas. No código, use matrizes para salvar as perguntas e respostas que o usuário envia e mantenha uma variável de contador para acompanhar em qual pergunta o usuário está. Ao final do teste, marque as respostas do usuário e exiba o resultado no formulário.
Etapa 1
Abra um novo projeto do Visual Basic. Adicione dois rótulos, três botões de opção e dois controles de botão ao formulário. Arraste os dois rótulos para o topo com Label1 em cima de Label2. Arraste RadioButton1, RadioButton2 e RadioButton3 para alinhar verticalmente abaixo dos rótulos. Arraste os dois botões abaixo dos botões de opção com Button1 à esquerda e Button2 à direita.
Etapa 2
Pressione “F7″ para abrir a janela de código. Digite o seguinte código no nível da classe:
Perguntas Dim(2, 4) As String Dim answers(2) As String Dim quesNum As Integer
A primeira linha cria uma matriz bidimensional. A primeira dimensão é para cada questão e a segunda dimensão é para a questão em si, três opções de resposta e a resposta correta. A segunda linha cria um array para armazenar as respostas do usuário. A terceira linha cria uma variável de contador que acompanha a pergunta em que o usuário está.
Etapa 3
Digite o seguinte código:
Private Sub GetQuestions() perguntas =New String(,) {{"Quantas cores há em um arco-íris?", "5", "6", "7", "7"},
{"Quem estrelou Piratas do Caribe?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, {"Qual é a capital da Flórida?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub
Esta sub-rotina simplesmente inicializa as três perguntas e respostas no array de perguntas. Você pode adicionar perguntas adicionais ou obtê-las de outras maneiras, como por meio de um arquivo de texto, mas, se fizer isso, lembre-se de alterar o tamanho das matrizes de perguntas e respostas para acomodar o número de perguntas.
Etapa 4
Digite o seguinte código:
Private Sub MarkTest() Dim grade As Integer =0 For i =0 To 2 If answers(i) =questions(i, 4) Then grade +=1 End If Next Label1.Text ="Teste finalizado!" Label2.Text ="Você marcou " ¬a &" de " &respostas. Comprimento &"!" RadioButton1.Enabled =Falso RadioButton2.Enabled =Falso RadioButton3.Enabled =Falso Button1.Enabled =Falso Button2.Enabled =Falso End Sub
A primeira linha declara uma sub-rotina que marca o teste. Ele cria uma variável local para contar a pontuação e, em seguida, percorre as respostas na matriz de perguntas e as respostas enviadas pelo usuário. Para cada resposta que corresponde, a nota aumenta em um. Em seguida, ele exibe a pontuação nos rótulos e desativa o restante dos controles.
Etapa 5
Abra a sub-rotina Form1_Load() e digite o seguinte código:
Me.Text ="Meu teste de múltipla escolha!" GetQuestions() quesNum =1 Label1.Text ="Pergunta " &quesNum &" de " &answers.Length Label2.Text =perguntas(0, 0) Button1.Text ="Anterior" Button2.Text ="Próximo" RadioButton1.Text =perguntas(0, 1) RadioButton2.Text =perguntas(0, 2) RadioButton3.Text =perguntas(0, 3)
A primeira linha define o título na barra de título. A próxima linha chama a sub-rotina GetQuestions(). A terceira linha inicializa a variável do contador de perguntas. A quarta linha mostra em qual número de pergunta o usuário está. A quinta linha exibe a primeira pergunta no rótulo. A sexta e a sétima linhas alteram o texto dos dois botões. As últimas três linhas inserem as três respostas de múltipla escolha como texto para os três botões de opção.
Etapa 6
Abra a sub-rotina Button1_Click() e digite o seguinte código:
If quesNum> 1 Then quesNum -=1 Label1.Text ="Question " &quesNum &" de 3" Label2.Text =perguntas(quesNum - 1, 0) RadioButton1.Text =perguntas(quesNum - 1, 1) RadioButton2.Text =perguntas(quesNum - 1, 2) RadioButton3.Text =perguntas(quesNum - 1, 3) If Button2.Text ="Enviar" Then Button2.Text ="Next" End If End If
Este é o código para o botão "Anterior". Ele primeiro verifica se o usuário pressionou o botão enquanto já estava na primeira pergunta. Caso contrário, ele diminui o contador de perguntas em um e atualiza o texto dos rótulos e botões de opção para mostrar a pergunta anterior. Se o usuário estava na pergunta final, o texto no Button2 muda de "Enviar" de volta para "Próximo".
Etapa 7
Abra a sub-rotina Button2_Click() e digite o seguinte código:
If RadioButton1.Checked =True Then answers(quesNum - 1) =RadioButton1.Text ElseIf RadioButton2.Checked =True Then answers(quesNum - 1) =RadioButton2.Text ElseIf RadioButton3.Checked =True Then answers(quesNum - 1) =RadioButton3. Text End If RadioButton1.Focus() If quesNum <3 Then quesNum +=1 Label1.Text ="Pergunta " &quesNum &" of " &answers.Length Label2.Text =perguntas(quesNum - 1, 0) RadioButton1.Text =question(quesNum - 1, 1) RadioButton2.Text =question(quesNum - 1, 2) RadioButton3.Text =question(quesNum - 1, 3) If quesNum =3 Then Button2.Text ="Enviar" End If Else MarkTest() Fim se
Este é o código para o botão "Next". As primeiras sete linhas verificam qual botão de opção o usuário selecionou e, em seguida, salva essa resposta na matriz de respostas. A próxima linha foca a seleção do botão de rádio em RadioButton1. A próxima linha verifica se o usuário não está na pergunta final. Se isso for verdade, ele aumenta o contador de perguntas em um e atualiza os rótulos e os botões de opção para mostrar a próxima pergunta. Em seguida, ele verifica se o usuário está agora na pergunta final. Nesse caso, ele altera o texto do botão Avançar de "Avançar" para "Enviar". Se o usuário já estava na pergunta final e clicou em "Enviar", o programa chama a função "MarkTest" para obter a pontuação do usuário.
Etapa 8
Salve o programa Visual Basic. Pressione “F5″ para executá-lo.