Cada pergunta num teste de múltipla escolha consiste na pergunta e várias respostas, apenas uma correta. Pode criar um teste em Visual Basic usando labels para mostrar perguntas, radio buttons para as respostas possíveis e botões para navegar entre perguntas. No código, use arrays para guardar perguntas e respostas submetidas e uma variável contador para controlar qual a pergunta atual. No final, corrija as respostas e mostre o resultado no formulário.
Abra um novo projeto Visual Basic. Adicione duas labels, três radio buttons e dois botões ao formulário. Arraste as labels para o topo com Label1 acima de Label2. Alinhe RadioButton1, RadioButton2 e RadioButton3 verticalmente abaixo das labels. Coloque os dois botões abaixo dos radio buttons com Button1 à esquerda e Button2 à direita.
Pressione "F7" para abrir a janela de código. Digite o seguinte código a nível de classe:
Dim questions(2, 4) As String
Dim answers(2) As String
Dim quesNum As Integer
A primeira linha cria um array bidimensional. A primeira dimensão é para cada pergunta e a segunda para a pergunta, três opções e a resposta correta. A segunda linha cria array para guardar respostas do utilizador. A terceira cria variável contador para a pergunta atual.
Digite o seguinte código:
Private Sub GetQuestions()
questions = New String(,) {{"Quantas cores tem um arco-íris?", "5", "6", "7", "7"},
{"Quem protagonizou Piratas das Caraíbas?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"},
{"Qual a capital da Florida?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}}
End Sub
Esta sub-rotina inicializa as três perguntas e respostas no array questions. Pode adicionar mais perguntas ou obtê-las doutra forma (ex: ficheiro de texto), mas lembre-se de ajustar o tamanho dos arrays.
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
Next
Label1.Text = "Teste terminado!"
Label2.Text = "Pontuou " & grade & " de " & answers.Length & "!"
RadioButton1.Enabled = False
RadioButton2.Enabled = False
RadioButton3.Enabled = False
Button1.Enabled = False
Button2.Enabled = False
End Sub
A primeira linha declara sub-rotina para corrigir. Cria variável local para contar pontuação, percorre respostas no array questions e as submetidas pelo utilizador. Para cada correspondência, a nota sobe. Mostra a pontuação nas labels e desativa os controlos.
Abra a sub-rotina Form1_Load() e digite:
Me.Text = "Meu Questionário de Múltipla Escolha!"
GetQuestions()
quesNum = 1
Label1.Text = "Pergunta " & quesNum & " de " & answers.Length
Label2.Text = questions(0, 0)
Button1.Text = "Anterior"
Button2.Text = "Seguinte"
RadioButton1.Text = questions(0, 1)
RadioButton2.Text = questions(0, 2)
RadioButton3.Text = questions(0, 3)
Define título na barra. Chama GetQuestions(). Inicializa contador. Mostra número da pergunta. Mostra primeira pergunta. Altera texto dos botões. Insere as três opções como texto dos radio buttons.
Abra Button1_Click() e digite:
If quesNum > 1 Then
quesNum -= 1
Label1.Text = "Pergunta " & quesNum & " de 3"
Label2.Text = questions(quesNum - 1, 0)
RadioButton1.Text = questions(quesNum - 1, 1)
RadioButton2.Text = questions(quesNum - 1, 2)
RadioButton3.Text = questions(quesNum - 1, 3)
If Button2.Text = "Submeter" Then Button2.Text = "Seguinte"
End If
Código do botão "Anterior". Verifica se não está na primeira pergunta. Decrementa contador e atualiza labels e radio buttons. Se estava na última, muda texto do Button2 de "Submeter" para "Seguinte".
Abra Button2_Click() e digite:
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 & " de " & answers.Length
Label2.Text = questions(quesNum - 1, 0)
RadioButton1.Text = questions(quesNum - 1, 1)
RadioButton2.Text = questions(quesNum - 1, 2)
RadioButton3.Text = questions(quesNum - 1, 3)
If quesNum = 3 Then Button2.Text = "Submeter"
Else
MarkTest()
End If
Código do botão "Seguinte". Verifica qual radio button selecionado, guarda resposta no array. Foca RadioButton1. Se não na última, incrementa contador e atualiza. Se agora na última, muda texto para "Submeter". Se já na última e clicou "Submeter", chama MarkTest().
Guarde o programa Visual Basic. Pressione "F5" para executar.
Tecnologia Eletrônica © [www.351231.com]