Шаг 2. Создание задачи на сложение случайных чисел

Для головоломки нужны математические задачи.Если головоломка повторяет одинаковые задачи, это не интересно, поэтому необходимо включить случайные числа.Был добавлен метод с именем StartTheQuiz(), который заполняет описание задач и запускает таймер обратного отсчета.На этом шаге добавляется задача случайного сложения.Другие математические задачи и таймер обратного отсчета добавляются в следующих шагах этого руководства.

В руководстве 2 было создано несколько компонентов SoundPlayer для игры "Лабиринт".Тоже самое делается для математической головоломки, за исключением того, что вместо класса SoundPlayer используется класс Random.

Создание задачи на сложение случайных чисел

  1. Создайте объект Random с помощью оператора new, как показано в примере ниже.

    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();
    

    Сейчас в форму был добавлен объект Random с именем randomizer.

    ПримечаниеПримечание

    В руководстве по игре "Лабиринт" было создано два компонента SoundPlayer с использованием оператора new.Сейчас объект был создан таким же образом.Единственное отличие от SoundPlayer состоит в том, что Random это не компонент и не элемент управления, поэтому его нельзя вызвать по такому имени.Он называется объектом.Вероятно вы слышали ранее слово "объект". Дополнительные сведения о том, что это значит приводятся в следующих нескольких руководствах.Сейчас все что нужно знать это то, что когда программа использует оператор new для создания кнопок, меток, панелей, компонентов OpenFileDialog, ColorDialog, SoundPlayer, Random и даже форм, элемент, который создается, называется объектом.В следующих руководствах более подробно рассказывается о работе объектов.

  2. Сейчас в начале формы создается новый объект Random и ему присваивается имя randomizer.Как и для компонента SoundPlayer, если перейти в метод и начать вводить randomizer, а затем точку (.), откроется окно IntelliSense, в котором будут показаны все методы объекта Random, которые можно вызвать.Метод Next() используется следующим образом.

    Метод Next

    Следующий метод

    При вызове метода random.Next(50) возвращается случайное число, которое меньше 50 (от 0 до 49).

  3. Вскоре будет создан метод для проверки ответов, поэтому программе нужно запомнить числа, которые она выбрала для задач.Добавьте в форму целое число (int в C# или Integer в Visual Basic) с именем addend1 и целое число int (Integer) с именем addend2 (также, как только что был добавлен объект Random с именем randomizer), как показано в примере ниже.

    ' 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;
    
    ПримечаниеПримечание

    Целое число int (Integer) используется для хранения положительного или отрицательного значения числа.Оно может содержать любое целое число из диапазона от -2 147 483 648 до 2 147 483 647.Оно может хранить только целые числа, но не дроби.

  4. Далее добавьте метод с именем StartTheQuiz(), который использует у объекта Random метод Next() для выбора двух чисел и размещения их в метках.В конечном итоге он заполнит все задачи и затем запустит таймер, поэтому добавьте комментарий.Код должен выглядеть следующим образом.

    ''' <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;
    }
    
    ПримечаниеПримечание

    Обратите внимание, что вызывается метод randomizer.Next(51).Используется число 51, а не 50, так как два числа добавляются к ответу, который находится в диапазоне от 0 до 100.Если в метод Next() передать число 50, то выбор выполняется из диапазона от 0 до 49, поэтому максимальный возможный ответ равен 98, а не 100.После того, как в методе выполняются два оператора, каждое из двух целых чисел int (Integer), addend1 и addend2 хранит случайное число в диапазоне от 0 до 50.

    Более внимательно ознакомимся с этими операторами.

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

    Операторы устанавливают значение свойств Текст у двух меток сложения — plusLeftLabel и plusRightLabel, поэтому эти метки отображают два случайных числа.Нужно использовать метод ToString() для преобразования целых чисел в текст (в программировании string (строка) означает текст), так как элементы управления Label могут отображать только текст, а не числа.

  5. Нужно, чтобы кнопка Пуск запускала головоломку, поэтому перейдите в конструктор Windows Forms и дважды щелкните по кнопке, чтобы добавить обработчик событий Click.Затем добавьте два следующих оператора.

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

    Известно, что первая оператор делает: Он вызывает новую StartTheQuiz() метод.Вторая устанавливает оператор startButton мониторинг Включено свойство False.Это отключает кнопку, поэтому пользователь не может ее нажать.Поэтому пользователь может нажать на кнопку Пуск только один раз.После этого кнопка отображается затененной и недоступной, пользователь должен завершить головоломку до истечения времени (или закрыть программу).

  6. Сохраните и выполните программу.Нажмите кнопку Пуск.Должна появиться задача сложения случайных чисел, как показано на рисунке ниже.

    Задача сложения случайных чисел

    Задача на сложение случайных чисел

Продолжить или повторить пройденный материал