手順 2: ランダムな加算問題の作成Step 2: Create a Random Addition Problem

このチュートリアルの第 2 部では、乱数に基づく計算問題を追加して、クイズに挑みます。In the second part of this tutorial, you make the quiz challenging by adding math problems that are based on random numbers. また、StartTheQuiz() という名前の、問題に記入して、カウントダウン タイマーを開始するメソッドを作成します。You also create a method that's named StartTheQuiz() and that fills in the problems and starts the countdown timer. このチュートリアルの後半では、減算、乗算、除算問題を追加します。Later in this tutorial, you'll add the subtraction, multiplication, and division problems.

注意

このトピックは、コーディングの基本概念に関するチュートリアル シリーズの一部です。This topic is part of a tutorial series about basic coding concepts. チュートリアルの概要については、「チュートリアル 2: 制限時間ありの計算クイズの作成」を参照してください。For an overview of the tutorial, see Tutorial 2: Create a Timed Math Quiz.

ランダムな加算問題を作成するにはTo create a random addition problem

  1. フォーム デザイナーで、フォーム (Form1) を選択します。In the form designer, choose the form (Form1).

  2. メニュー バーで [表示][コード]の順に選択します。On the menu bar, choose View, Code.

    使用しているプログラミング言語によって Form1.cs または Form1.vb が表示されるため、フォームの分離コードを表示できます。Form1.cs or Form1.vb appears, depending on the programming language that you're using, so that you can view the code behind the form.

  3. 次のように、コードの先頭付近に Random ステートメントを追加して new オブジェクトを作成します。Create a Random object by adding a new statement near the top of the code, like the following.

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

    Random オブジェクトをフォームに追加し、オブジェクトに randomizer という名前を付けました。You've added a Random object to your form and named the object randomizer.

    Random はオブジェクトと呼ばれます。Random is known as an object. この言葉は聞いたことがあるでしょう。次のチュートリアルでプログラミングでのその意味について説明していきます。You've probably heard that word before, and you learn more about what it means for programming in the next tutorial. ここでは、ボタン、ラベル、パネル、OpenFileDialogs、ColorDialogs、SoundPlayers、Randoms、およびフォームの作成に new ステートメントを使用することができ、これらの項目はオブジェクトと呼ばれることを覚えておいてください。For now, just remember that you can use new statements to create buttons, labels, panels, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms, and even forms, and those items are referred to as objects. プログラムを実行すると、フォームが開始され、その分離コードは Random オブジェクトを作成し、randomizer と名付けます。When you run your program, the form is started, and the code behind it creates a Random object and names it randomizer.

    すぐにメソッドをビルドして解答を確認するため、クイズは変数を使用して各問題に生成する乱数を格納する必要があります。Soon you'll build a method to check the answers, so your quiz must use variables to store the random numbers that it generates for each problem. 変数またはに関するページを参照してください。See Variables or Types. 変数を適切に使用するためには、変数を宣言する必要があります。これは名前およびデータ型を一覧表示することを意味します。To properly use variables, you must declare them, which means listing their names and data types.

  4. 2 つの整数変数をフォームに追加し、addend1addend2 という名前を付けます。Add two integer variables to the form, and name them addend1 and addend2.

    注意

    整数変数は、C# では int、Visual Basic では Integer と呼ばれます。An integer variable is known as an int in C# or an Integer in Visual Basic. この種類の変数は、-2147483648 から 2147483647 の正または負の数を格納し、整数のみを格納することができ、小数は格納できません。This kind of variable stores a positive or negative number from -2147483648 through 2147483647 and can store only whole numbers, not decimals.

    次のコードに示すように、Random オブジェクトを追加するために使用したものと同様の構文を使用して整数変数を追加します。You use a similar syntax to add an integer variable as you did to add the Random object, as the following code shows.

    // 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;
    
    ' 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
    
  5. StartTheQuiz() と名付けられたメソッドを追加しますが、このメソッドは Random オブジェクトの Next() メソッドを使用してラベルの乱数を表示します。Add a method that's named StartTheQuiz() and that uses the Random object's Next() method to show the random numbers in the labels. StartTheQuiz() は最終的にすべての問題に入力し、タイマーを開始するので、コメントを追加します。StartTheQuiz() will eventually fill in all of the problems and then start the timer, so add a comment. 関数は次のようになります。The function should look like the following.

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

    コードで randomizer の後にドット (.) を入力すると、IntelliSense ウィンドウが開き、呼び出すことができる Random オブジェクトのすべてのメソッドが表示されることに注意してください。Notice that when you enter the dot (.) after randomizer in the code, an IntelliSense window opens and shows you all of the Random object's methods that you can call. たとえば、IntelliSense は Next() メソッドを次のように一覧表示します。For example, Intellisense lists the Next() method, as follows.

    次のメソッドNext method
    次のメソッドNext method

    オブジェクトの後にドットを入力すると、IntelliSense はプロパティ、メソッド、イベントなどのオブジェクトのメンバーの一覧を表示します。When you enter a dot after an object, IntelliSense shows a list of the object's members, such as properties, methods, and events.

    注意

    Next() を呼び出す場合など、Random オブジェクトで randomizer.Next(50) メソッドを使用するときは、50 未満の乱数を取得します (0 ~ 49)。When you use the Next() method with the Random object, such as when you call randomizer.Next(50), you get a random number that's less than 50 (from 0 through 49). この例では、randomizer.Next(51) を呼び出します。In this example, you called randomizer.Next(51). 2 つの乱数を合計した答えが 0 ~ 100 になるようにするため、50 ではなく 51 を使用しました。You used 51 and not 50 so that the two random numbers will add up to an answer that's from 0 through 100. Next() メソッドに 50 を渡した場合、0 ~ 49 の数値が選択されるため、答えの最大値が 100 ではなく 98 になります。If you pass 50 to the Next() method, it chooses a number from 0 through 49, so the highest possible answer is 98, not 100. メソッドの最初の 2 つのステートメントが実行された後、addend1addend2 の 2 つの整数変数は、それぞれ 0 ~ 50 の乱数を保持します。After the first two statements in the method run, each of the two integer variables, addend1 and addend2, hold a random number from 0 through 50. このスクリーンショットは Visual C# コードを表示していますが、IntelliSense は Visual Basic の場合でも同様に動作します。This screenshot shows Visual C# code, but IntelliSense works the same way for Visual Basic.

    次のステートメントについて詳しく見てみましょう。Take a closer look at these statements.

    plusLeftLabel.Text = addend1.ToString();
    plusRightLabel.Text = addend2.ToString();
    
    ' 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 および plusRightLabelText プロパティを設定し、2 つの乱数が表示されるようになっています。The statements set the Text properties of plusLeftLabel and plusRightLabel so that they display the two random numbers. 数値をテキストに変換するには、整数の ToString() メソッドを使用する必要があります。You must use the integer's ToString() method to convert the numbers to text. (プログラミングでは、文字列はテキストを意味します。(In programming, string means text. ラベル コントロールには、数ではなく、テキストのみが表示されます。Label controls display only text, not numbers.

  6. デザイン ウィンドウで、[Start] ボタンをダブルクリックするか、または [Start] ボタンをクリックして、Enter キーを押します。In the design window, either double-click the Start button, or choose it and then choose the Enter key.

    クイズの受け手がこのボタンをクリックすると、クイズが開始され、その動作を実装する Click イベント ハンドラーが追加されました。When a quiz taker chooses this button, the quiz should start, and you've just added a Click event handler to implement that behavior.

  7. 次の 2 つのステートメントを追加します。Add the following two statements.

    private void startButton_Click(object sender, EventArgs e)
    {
        StartTheQuiz();
        startButton.Enabled = false;           
    }
    
    ' Call the StartTheQuiz() method and enable
    ' the Start button. 
    Private Sub startButton_Click() Handles startButton.Click
        StartTheQuiz()
        startButton.Enabled = False
    End Sub
    

    最初のステートメントは新しい StartTheQuiz() メソッドを呼び出します。The first statement calls the new StartTheQuiz() method. 2 番目のステートメントは startButton コントロールの Enabled プロパティを False に設定するため、クイズの受け手はクイズ中にこのボタンをクリックできません。The second statement sets the Enabled property of the startButton control to False so that the quiz taker can't choose the button during a quiz.

  8. コードを保存し、実行して、[Start] ボタンをクリックします。Save your code, run it, and then choose the Start button.

    次の図に示すように、ランダムな加算問題が表示されます。A random addition problem appears, as the following illustration shows.

    ランダムな加算の問題Random addition problem
    ランダムな加算の問題Random addition problem

    チュートリアルの次の手順では、合計を追加します。In the next step of the tutorial, you'll add the sum.

続行または確認するにはTo continue or review