Menu

NewGame メニューを実装して、プレイが出来るようにします。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. Layout では、イベントハンドラーの登録とメニューの実装は後回しにしました。
    ここでは NewGame メニューを実装して、プレイが出来るようにします。
    まず Layout の表に従って、稲妻アイコンからイベントハンドラーを作成して下さい。
    NewGame メニューだけで無く、全てのイベントハンドラーを作成して下さい。
    イベントハンドラーの作成は ToolBox からメニューを貼り付ける を参照して下さい。
  2. NewGame メニューのイベントハンドラーを実装します。
    親メニュー 子メニュー メソッド 説明
    NewGame(&G)
    Level-1(&A) Level_1 Level_1 で出題します
    Level-2(&B) Level_2 Level_2 で出題します
    Level-3(&C) Level_3 Level_3 で出題します
    Reset(&R) Reset 出題の状態に戻します
    Complete(&Q)Complete 完成のチェックをします
  3. Level_1 から Level_3 のイベントハンドラーは簡単で Generate() 関数を呼ぶだけです。
    問題の出題レベルは、数字を抜く確率で調整します。
    娘によれば、ナンプレでは複数の正解が生じる問題は駄目だと言うのですが、今回は目をつぶります。 (^_^;)
        private void Level_1(object sender, EventArgs e)
        {   Generate(40);  }
    
        private void Level_2(object sender, EventArgs e)
        {   Generate(50);  }
    
        private void Level_3(object sender, EventArgs e)
        {   Generate(60);  }
    
  4. Reset() では m_ct[i, j]!=0 の数字を消して、色を1に戻します。
    m_ct[i, j] が 0 のマスは出題図の数字なので残します。
        private void Reset(object sender, EventArgs e)
        {
            for(int i=0; i<9; i++)
                for (int j = 0; j < 9; j++)
                    if (m_ct[i, j] != 0)
                    {   m_t[i, j] = 0;
                        m_ct[i, j] = 1;
                    }
            Invalidate();
        }
    
  5. Complete() では縦と横の数字を合計して、それぞれが45のとき正解としています。
    本当は小プレートの確認も必要なのですが、エラー箇所の指摘と併せて Alpha 版 で説明します。
        private void Complete(object sender, EventArgs e)
        {
            int sum;
            for (int i = 0; i < 9; i++)
            {
                sum = 0;
                for (int j = 0; j < 9; j++) sum += m_t[i, j];
                if (sum != 45) return;
                sum = 0;
                for (int j = 0; j < 9; j++) sum += m_t[j, i];
                if (sum != 45) return;
            }
            MessageBox.Show("完成しました! \(^o^)/");
        }
    
  6. ここまで進めば、問題を作成してゲームを楽しむことが出来るようになります。
    起動直後のレベルは、超簡単になるように Generate(35); で呼び出しています。
    Level-1(40), Level-2(50), Level-3(60) を選んでプレイしてみて下さい。

[Next Chapter ↓] Alpha 版
[Previous Chapter ↑] Layout

超初心者のプログラム入門(C# Frame Work)