手順 2: ランダムな加算問題の作成

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

このチュートリアルの第 2 部では、乱数に基づく計算問題を追加して、クイズに挑みます。 また、StartTheQuiz() という名前の、問題に記入して、カウントダウン タイマーを開始するメソッドを作成します。 このチュートリアルの後半では、減算、乗算、除算問題を追加します。

注意

このトピックは、コーディングの基本概念に関するチュートリアル シリーズの一部です。 チュートリアルの概要については、「チュートリアル 2: 制限時間ありの計算クイズの作成」を参照してください。

ランダムな加算問題を作成するには

  1. フォーム デザイナーで、フォーム (Form1) を選択します。

  2. メニュー バーで [表示][コード] の順に選択します。

    使用しているプログラミング言語によって Form1.cs または Form1.vb が表示されるため、フォームの分離コードを表示できます。

  3. 次のように、コードの先頭付近に new ステートメントを追加して Random オブジェクトを作成します。

    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 という名前を付けました。

    Random はオブジェクトと呼ばれます。 この言葉は聞いたことがあるでしょう。次のチュートリアルでプログラミングでのその意味について説明していきます。 ここでは、ボタン、ラベル、パネル、OpenFileDialogs、ColorDialogs、SoundPlayers、Randoms、およびフォームの作成に new ステートメントを使用することができ、これらの項目はオブジェクトと呼ばれることを覚えておいてください。 プログラムを実行すると、フォームが開始され、その分離コードは Random オブジェクトを作成し、Randomizer と名付けます。

    すぐにメソッドをビルドして解答を確認するため、クイズは変数を使用して各問題に生成する乱数を格納する必要があります。 詳細については、「Variables」または「」を参照してください。 変数を適切に使用するためには、変数を宣言する必要があります。これは名前およびデータ型を一覧表示することを意味します。

  4. 2 つの整数変数をフォームに追加し、addend1addend2 という名前を付けます。

    注意

    整数変数は、C# では int、Visual Basic では Integer と呼ばれます。 この種類の変数は、-2147483648 から 2147483647 の正または負の数を格納し、整数のみを格納することができ、小数は格納できません。

    次のコードに示すように、Random オブジェクトを追加するために使用したものと同様の構文を使用して整数変数を追加します。

    // 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() メソッドを使用してラベルの乱数を表示します。 StartTheQuiz() は最終的にすべての問題に入力し、タイマーを開始するので、コメントを追加します。 関数は次のようになります。

    /// <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 オブジェクトのすべてのメソッドが表示されることに注意してください。 たとえば、IntelliSense は Next() メソッドを次のように一覧表示します。

    次のメソッド
    Next メソッド

    オブジェクトの後にドットを入力すると、IntelliSense はプロパティ、メソッド、イベントなどのオブジェクトのメンバーの一覧を表示します。

    注意

    randomizer.Next(50) を呼び出す場合など、Random オブジェクトで Next() メソッドを使用するときは、50 未満の乱数を取得します (0 ~ 49)。 この例では、randomizer.Next(51) を呼び出します。 2 つの乱数を合計した答えが 0 ~ 100 になるようにするため、50 ではなく 51 を使用しました。 Next() メソッドに 50 を渡した場合、0 ~ 49 の数値が選択されるため、答えの最大値が 100 ではなく 98 になります。 メソッドの最初の 2 つのステートメントが実行された後、addend1addend2 の 2 つの整数変数は、それぞれ 0 ~ 50 の乱数を保持します。 このスクリーンショットは Visual C# コードを表示していますが、IntelliSense は Visual Basic の場合でも同様に動作します。

    次のステートメントについて詳しく見てみましょう。

    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 および plusRightLabel[Text] プロパティを設定し、2 つの乱数が表示されるようになっています。 数値をテキストに変換するには、整数の ToString() メソッドを使用する必要があります。 (プログラミングでは、文字列はテキストを意味します。 ラベル コントロールには、数ではなく、テキストのみが表示されます。

  6. デザイン ウィンドウで、[Start] をダブルクリックするか、または [Start] をクリックして、Enter キーを押します。

    クイズの受け手がこのボタンをクリックすると、クイズが開始され、その動作を実装する Click イベント ハンドラーが追加されました。

  7. 次の 2 つのステートメントを追加します。

    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() メソッドを呼び出します。 2 番目のステートメントは startButton コントロールの [Enabled] プロパティを False に設定するため、クイズの受け手はクイズ中にこのボタンをクリックできません。

  8. コードを保存し、実行して、[Start] をクリックします。

    次の図に示すように、ランダムな加算問題が表示されます。

    ランダムな加算の問題
    ランダムな加算問題

    チュートリアルの次の手順では、合計を追加します。

続行または確認するには