Etapa 6: Adicionar um problema de subtração
Para adicionar um problema de subtração, você precisa:
Armazene os valores de subtração.
Gerar números aleatórios para o problema (e certifique-se de que a resposta está entre 0 e 100).
Atualizar o método verifica as respostas para que o método verifica o Nova problema de subtração muito.
Atualize o manipulador de Evento Tick do timer de para que o manipulador de Evento preenche a resposta correta ao Hora se esgotar.
Para adicionar um problema de subtração
Em primeiro lugar, você precisa de um local para armazenar os valores, para adicionar dois ints (números inteiros) para o problema de subtração ao seu formulário. O Nova código aparece entre os inteiros de adição e o timer de Número Número inteiro. O código deve parecer semelhante ao seguinte.
Public Class Form1 ' Create a Random object to generate random numbers. Dim randomizer As New Random ' These Integers will store the numbers ' for the addition problem. Dim addend1 As Integer Dim addend2 As Integer ' These Integers will store the numbers ' for the subtraction problem. Dim minuend As Integer Dim subtrahend As Integer ' This Integer will keep track of the time left. Dim timeLeft As Integer
public partial class Form1 : Form { // Create a Random object to generate random numbers. Random randomizer = new Random(); // These ints will store the numbers // for the addition problem. int addend1; int addend2; // These ints will store the numbers // for the subtraction problem. int minuend; int subtrahend; // This int will keep track of the time left. int timeLeft;
Observação
Os nomes do Nova ints — de minuend e subtrahend — não são os termos do Visual c# ou termos de programação ainda. Eles são os nomes tradicionais na aritmética para o número que está sendo subtraídas (o subtrahend) e o número que está sendo subtraído do (a minuend). A diferença é o minuend menos o subtrahend. Você pode usar outros nomes, como seu programa não requerem nomes específicos para ints, controles, componentes ou métodos. Existem algumas regras (por exemplo, nomes não podem começar com dígitos), mas em geral, você pode usar nomes sistema autônomo x1, x2, X3, x4 e assim por diante. Mas seria difícil Leitura o código e praticamente impossível para rastrear problemas. Você usará os nomes de tradicionais de multiplicação (multiplicand × multiplicador = produto) e divisão (dividendo ÷ divisor = quociente) mais adiante neste tutorial.
Em seguida, Modificar o **StartTheQuiz()**método para Preenchimento um problema de subtração Aleatório. O Nova código segue o comentário "Preenchimento o problema de subtração". O código deve parecer semelhante ao 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. addend1 = randomizer.Next(51) addend2 = randomizer.Next(51) plusLeftLabel.Text = addend1.ToString plusRightLabel.Text = addend2.ToString sum.Value = 0 ' Fill in the subtraction problem. minuend = randomizer.Next(1, 101) subtrahend = randomizer.Next(1, minuend) minusLeftLabel.Text = minuend.ToString minusRightLabel.Text = subtrahend.ToString difference.Value = 0 ' Start the timer. timeLeft = 30 timeLabel.Text = "30 seconds" Timer1.Start() 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. addend1 = randomizer.Next(51); addend2 = randomizer.Next(51); plusLeftLabel.Text = addend1.ToString(); plusRightLabel.Text = addend2.ToString(); sum.Value = 0; // Fill in the subtraction problem. minuend = randomizer.Next(1, 101); subtrahend = randomizer.Next(1, minuend); minusLeftLabel.Text = minuend.ToString(); minusRightLabel.Text = subtrahend.ToString(); difference.Value = 0; // Start the timer. timeLeft = 30; timeLabel.Text = "30 seconds"; timer1.Start(); }
Esse código usa a Randomclasse de **Next()**método um pouco diferente. Quando você atribuir-lhe dois valores, ele escolherá um número aleatório que é Maior ou igual a ao primeiro e Menos que a segunda. A linha a seguir escolhe um número aleatório de 1 a 100 e o armazena no minuend.
minuend = randomizer.Next(1, 101)
minuend = randomizer.Next(1, 101);
RandomClasse **Next()**chamado de método de várias maneiras. Quando você pode chamar um método em maior que uma forma, que é chamada de método sobrecarregado um e você pode usar o IntelliSense para explorar isso. Examinar outra a IntelliSense janela dica de ferramenta para o **Next()**método.
Dica de ferramenta de janela do IntelliSense
Observe como a dica de ferramenta mostra (+ 2 sobrecarga(s)). Isso significa que há Dois outras maneiras que você pode chamar o **Next()**método. Quando você Tipo o Nova código para o **StartTheQuiz()**método, você pode ver mais Informação. sistema autônomo logo sistema autônomo digitar randomizer.Next(,o IntelliSense janela será aberta. Pressionar sistema autônomo teclsistema autônomo de seta para cima e seta Abaixo para percorrer sistema autônomo sobrecargsistema autônomo, conforme mostrado no exemplo a seguir Imagem.
Sobrecargas da janela do IntelliSense
Na anterior Imagem for a desejada, pois ele permite que você especifique um valor mínimo e Valor máximo.
Modifique o **CheckTheAnswer()**método para Seleção se a resposta correta de subtração. O código deve parecer semelhante ao seguinte.
''' <summary> ''' Check the answer to see if the user got everything right. ''' </summary> ''' <returns>True if the answer's correct, false otherwise.</returns> ''' <remarks></remarks> Public Function CheckTheAnswer() As Boolean If ((addend1 + addend2 = sum.Value) AndAlso (minuend - subtrahend = difference.Value)) Then Return True Else Return False End If End Function
/// <summary> /// Check the answer to see if the user got everything right. /// </summary> /// <returns>True if the answer's correct, false otherwise.</returns> private bool CheckTheAnswer() { if ((addend1 + addend2 == sum.Value) && (minuend - subtrahend == difference.Value)) return true; else return false; }
&&É o Visual c# logical andoperador. No Visual Basic, o operador equivalente é AndAlso. É o mesmo sistema autônomo dizendo, "Se addend1 mais addend2 for igual ao valor da soma NumericUpDown e se minuend menos subtrahend for igual ao valor da diferença NumericUpDown." O **CheckTheAnswer()**método Apenas Devoluções true se o problema de adição está correto e o problema de subtração está correto.
Alterar Último parte do manipulador de Evento Tick do timer para que ela preencha a resposta correta ao Hora execuções Saída. O código deve parecer semelhante ao seguinte.
Else ' If the user ran out of time, stop the timer, show ' a MessageBox, and fill in the answers. Timer1.Stop() timeLabel.Text = "Time's up!" MessageBox.Show("You didn't finish in time.", "Sorry") sum.Value = addend1 + addend2 difference.Value = minuend - subtrahend startButton.Enabled = True End If
else { // If the user ran out of time, stop the timer, show // a MessageBox, and fill in the answers. timer1.Stop(); timeLabel.Text = "Time's up!"; MessageBox.Show("You didn't finish in time.", "Sorry"); sum.Value = addend1 + addend2; difference.Value = minuend - subtrahend; startButton.Enabled = true; }
salvar e execute seu código. O programa agora deve ter um problema de subtração, conforme mostrado a seguir Imagem.
Teste de matemática com problema de subtração
Para continuar ou revisar
Para ir para o Próximo tutorial passo, consulte Etapa 7: Adicione os problemas de divisão e multiplicação.
Para Retorno à etapa anterior tutorial, consulte Etapa 5: Adicionar insira manipuladores de Evento para controles de NumericUpDown.