Compartir a través de


Paso 2: Crear un problema de suma aleatoria

La prueba necesita problemas de matemáticas.Si la prueba repite los mismos problemas, no supone ningún reto. Por ello, es interesante incluir números aleatorios.Agregue un método denominado StartTheQuiz() que rellena los problemas e inicia el temporizador de cuenta atrás.Para este paso, agregaremos un problema de suma aleatoria.Los demás problemas de matemáticas y el temporizador de cuenta atrás se agregan en pasos posteriores de este tutorial.

En el tutorial 2, hemos creado varios elementos SoundPlayer para un juego de laberinto.Para la prueba matemática hacemos lo mismo, salvo que en lugar de la clase SoundPlayer, utilizaremos la clase Random.

Para crear un problema de suma aleatoria

  1. Cree un objeto Random utilizando una instrucción new como la siguiente.

    Public Class Form1
    
        ' Create a Random object to generate random numbers.
        Private randomizer As New Random
    
    public partial class Form1 : Form
    {
        // Create a Random object to generate random numbers.
        Random randomizer = new Random();
    

    Ahora, hemos agregado un objeto Random al formulario y lo hemos denominado randomizer.

    [!NOTA]

    En el tutorial del laberinto, creamos dos componentes SoundPlayer mediante la instrucción new.Esto hace algo similar.La única diferencia es que, al contrario que SoundPlayer, Random no es un componente ni un control, de modo que no podemos llamarlo así.Se denomina objeto.Probablemente habrá oído la palabra objeto antes. Obtendrá más información sobre lo que significa en los próximos tutoriales.De momento, todo lo que necesita saber es que cuando el programa utiliza una instrucción new para crear botones, etiquetas, paneles, elementos OpenFileDialog, ColorDialog, SoundPlayer o Random, e incluso formularios, el elemento que se crea se denomina objeto.Los tutoriales posteriores muestran mucha más información sobre cómo funcionan estos objetos.

  2. Ahora, al iniciar el formulario, crea un nuevo objeto Random y le da el nombre randomizer.Como con los elementos SoundPlayer, si entramos en un método y comenzamos a escribir randomizer con un punto (.) a continuación, se abre una ventana IntelliSense que muestra todos los métodos del objeto Random a los que se puede llamar.El método Next() se utiliza como se indica a continuación.

    Método Next

    Método Next

    Cuando se llama a random.Next(50), se obtiene un número aleatorio que es menor que 50 (del 0 al 49).

  3. Pronto compilaremos un método para comprobar las respuestas, de modo que el programa tiene que recordar qué números ha elegido para los problemas.Agregue un valor de tipo integer (denominado valor de tipo int en C# o Integer en Visual Basic) denominado addend1 y otro denominado addend2 al formulario (igual que agregó el objeto Random denominado randomizer), como sigue.

    ' Create a Random object to generate random numbers.
    Private randomizer As New Random
    
    ' These Integers will store the numbers
    ' for the addition problem.
    Private addend1 As Integer
    Private addend2 As Integer
    
    // 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;
    

    [!NOTA]

    Un valor de tipo int (Integer) se utiliza para almacenar un valor numérico positivo o negativo.Puede contener cualquier número comprendido entre el -2147483648 y el 2147483647.Sólo puede almacenar los números enteros y no los decimales.

  4. Luego, agregue un método denominado StartTheQuiz() que utiliza el método Next() del objeto Random para elegir dos números y colocarlos en las etiquetas.Gradualmente irá rellenando todos los problemas e iniciará el temporizador, así que debe agregar un comentario.Debe tener este aspecto:

    ''' <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
    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;
    }
    

    [!NOTA]

    Recuerde que ha llamado a randomizer.Next(51).El motivo de utilizar 51 y no 50 es que los dos números sumen una respuesta que esté comprendida entre el 0 y el 100.Si pasa 50 al método Next(), elegirá un número del 0 al 49, de modo que mayor respuesta posible sería 98, y no 100.Después de ejecutarse las dos primeras instrucciones del método, cada uno de los dos valores de tipo int (Integer), addend1 y addend2, contiene un número aleatorio del 0 al 50.

    Fijémonos con más atención en estas instrucciones.

    plusLeftLabel.Text = addend1.ToString()
    plusRightLabel.Text = addend2.ToString()
    
    plusLeftLabel.Text = addend1.ToString();
    plusRightLabel.Text = addend2.ToString();
    

    Las instrucciones establecen las propiedades Text de las dos etiquetas plus, plusLeftLabel y plusRightLabel, para que muestren los dos números aleatorios.Hay que utilizar el método ToString() del valor int (Integer) para convertirlo en texto (en programación, string, o cadena, significa texto), porque los controles Label únicamente muestran texto, y no números.

  5. El botón de inicio debe iniciar la prueba. Para ello, vaya al Diseñador de Windows Forms y haga doble clic en el botón, a fin de agregar un controlador de eventos Click.A continuación, agregue las dos instrucciones siguientes.

    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;           
    }
    

    Conoce lo que hace la primera instrucción: Llama al nuevo método de StartTheQuiz() .La segunda instrucción establece la propiedad de Habilitada de control de clave inicial a Falso.Con ello se deshabilita el botón, de modo que el usuario no pueda hacer clic en él.De esta forma, el usuario puede hacer clic en el botón de inicio una sola vez.A continuación, el botón aparece atenuado y no está disponible, y el usuario debe finalizar la prueba antes de que se agote el tiempo (o cerrar el programa).

  6. Ahora, guarde y ejecute el programa.Haga clic en el botón de inicio.Debe aparecer un problema de suma aleatoria, como se muestra en la siguiente imagen.

    Problema de suma aleatoria

    Problema de sumas aleatorias

Para continuar o revisar