Etapa 2: Criar um problema de adição aleatório
Na segunda parte deste tutorial, você deixa o teste desafiador adicionando problemas de matemática baseados em números aleatórios.Você também cria um método que nomeado como StartTheQuiz() e que preenche os problemas e inicia o timer de contagem regressiva.Posteriormente neste tutorial, você adicionará problemas de subtração, multiplicação, e de divisão.
Observação |
---|
Esse tópico faz parte de uma série de tutoriais sobre conceitos de codificação básica.Para obter uma visão geral do tutorial, consulte Tutorial 2: Criar um teste de matemática com cronômetro. |
Para criar um problema aleatório de adição
No designer de formulário, escolha o formulário (Form1).
Na barra de menu, escolha Exibir, Código.
Form1.cs ou Form1.vb aparecerá, dependendo da linguagem de programação que você estiver usando, para que você possa exibir o código do formulário.
Crie um objeto de Random adicionando uma instrução de new próximo à parte superior do código, como a seguir.
Public Class Form1 ' Create a Random object called randomizer ' to generate random numbers. Private randomizer As New Random
public partial class Form1 : Form { // Create a Random object called randomizer // to generate random numbers. Random randomizer = new Random();
Você adicionou um objeto de Random ao seu formulário e nomeou o objeto randomizer.
Random é conhecido como um objeto.Provavelmente, você ouviu essa palavra antes e aprenderá mais sobre o significado de programação no tutorial seguir.Por enquanto, apenas lembre-se de que você pode usar instruções new para criar botões, rótulos, painéis, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms e até mesmo formulários, e esses itens são chamados de objetos.Quando você executa o programa, o formulário é iniciado e o código atrás dele cria um objeto de Random e o renomeia para randomizer.
Logo você irá criar um método para verificar as respostas, de modo que seu teste use variáveis para armazenar os números aleatórios que gera para cada problema.Consulte Variáveis no Visual Basic ou Tipos (Guia de Programação em C#).Para usar variáveis corretamente, você deve declará-los, o que significa listar seus nomes e tipos de data.
Adicione duas variáveis inteiras ao formulário, e nomeie-as addend1 e addend2.
Observação Uma variável inteira é conhecida como um int em C# ou como Integer no Visual Basic.Esse tipo de variável armazena um número positivo ou negativo de -2147483648 a 2147483647 e pode armazenar apenas números inteiros, não decimais.
Você usa uma sintaxe semelhante para adicionar uma variável inteira como fez para adicionar o objeto de Random, desde que o código a seguir seja mostrado.
' Create a Random object called randomizer ' to generate random numbers. Private randomizer As New Random ' These integer variables store the numbers ' for the addition problem. Private addend1 As Integer Private addend2 As Integer
// Create a Random object called randomizer // to generate random numbers. Random randomizer = new Random(); // These integer variables store the numbers // for the addition problem. int addend1; int addend2;
Adicione um método chamado StartTheQuiz() e que usa o método de Next() do objeto de Random para mostrar os números aleatórios nos rótulos.Por fim, o StartTheQuiz() preencherá todos os problemas e iniciar o temporizador, adicione um comentário.A função deve se parecer com o seguinte.
''' <summary> ''' Start the quiz by filling in all of the problems ''' and starting the timer. ''' </summary> ''' <remarks></remarks> Public Sub StartTheQuiz() ' Fill in the addition problem. ' Generate two random numbers to add. ' Store the values in the variables 'addend1' and 'addend2'. addend1 = randomizer.Next(51) addend2 = randomizer.Next(51) ' Convert the two randomly generated numbers ' into strings so that they can be displayed ' in the label controls. plusLeftLabel.Text = addend1.ToString() plusRightLabel.Text = addend2.ToString() ' 'sum' is the name of the NumericUpDown control. ' This step makes sure its value is zero before ' adding any values to it. sum.Value = 0 End Sub
/// <summary> /// Start the quiz by filling in all of the problems /// and starting the timer. /// </summary> public void StartTheQuiz() { // Fill in the addition problem. // Generate two random numbers to add. // Store the values in the variables 'addend1' and 'addend2'. addend1 = randomizer.Next(51); addend2 = randomizer.Next(51); // Convert the two randomly generated numbers // into strings so that they can be displayed // in the label controls. plusLeftLabel.Text = addend1.ToString(); plusRightLabel.Text = addend2.ToString(); // 'sum' is the name of the NumericUpDown control. // This step makes sure its value is zero before // adding any values to it. sum.Value = 0; }
Observe que quando você digita o ponto (.) após o randomizador no código, uma janela do IntelliSense abre e mostra todos os métodos do objeto de Random que você pode chamar.Por exemplo, o Intellisense lista o método Next(), como segue.
Próximo método
Quando você inseri um ponto depois de um objeto, o IntelliSense exibe uma lista de membros do objeto, como propriedades, métodos e eventos.
Observação Quando você usa o método de Next() com o objeto de Random, como quando você chama randomizer.Next(50), você obtém um número aleatório que é menor que 50 (de 0 a 49).Nesse exemplo, você chamou randomizer.Next(51).Você usou 51 e não 50, portanto os dois números aleatórios serão adicionados a uma resposta entre 0 e 100.Se você passar 50 para o método de Next(), ele escolherá um número de 0 a 49, para que a resposta possível mais alta seja 98, não 100.Após as duas primeiras instruções no método serem executadas, cada uma das duas variáveis inteiras, addend1 e addend2, conterá um número aleatório de 0 a 50.Essa tela mostra o código Visual C#, mas o trabalho do IntelliSense a mesma maneira para Visual Basic.
Confira de perto estas instruções.
' Convert the two randomly generated numbers ' into strings so that they can be displayed ' in the label controls. plusLeftLabel.Text = addend1.ToString() plusRightLabel.Text = addend2.ToString()
plusLeftLabel.Text = addend1.ToString(); plusRightLabel.Text = addend2.ToString();
As instruções definem propriedades de Texto de plusLeftLabel e plusRightLabel de modo que exibam os dois números aleatórios.Você deve usar o método de ToString() inteiro para converter números para texto. (Na programação, a cadeia de caracteres significa o texto.Os controles de rótulo exibem apenas texto, não números.
Na janela de design, clique duas vezes no botão Iniciar, ou selecione-o e pressione a tecla ENTER.
Quando um participante de teste escolhe esse botão, o teste deve iniciar, e você acabou de adicionar um manipulador de eventos de clique para implementar esse comportamento.
Adicione as duas instruções a seguir.
' Call the StartTheQuiz() method and enable ' the Start button. Private Sub startButton_Click() Handles startButton.Click StartTheQuiz() startButton.Enabled = False End Sub
private void startButton_Click(object sender, EventArgs e) { StartTheQuiz(); startButton.Enabled = false; }
A primeira instrução chama o novo método de StartTheQuiz().A segunda instrução define a propriedade de Habilitado de controle startButton para Falso de modo que o comprador pode escolher o botão durante o teste.
Salvar seu código, execute-o, e então escolha o botão Iniciar.
Um problema aleatório de adição aparece, conforme mostra a ilustração a seguir.
Problema aleatório de adição
Na próxima etapa do tutorial, você adicionará o resultado.
Para continuar ou revisar
Para ir para a próxima etapa do tutorial, consulte Etapa 3: Adicionar um temporizador de contagem regressiva.
Para retornar à etapa anterior do tutorial, consulte Etapa 1: Criar um projeto e adicionar rótulos ao formulário.