自分だけのクイズ作成 - Quipha公開中

【#7】C#でゲームを作ろう【敵クラスの生成】

C#
スポンサーリンク

メインフォームの敵を倒す処理の実装

敵クラスの実装が完了しましたので、いよいよメイン画面の敵を倒す処理を実装します。
まずメイン画面(F_Main)にタイマーを二つ追加します。

敵を動かすタイマー(Timer)

プロパティ備考
NameT_Enemy
Interval1000

残り時間をカウントタイマー(Timer)

プロパティ備考
NameT_Jikan
Interval1000

まず敵を動かすイベントです。
T_EnemyのTickイベントに以下を記述します。

        /// <summary>
        /// 敵を動かす
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void T_Enemy_Tick(object sender, EventArgs e)
        {
            // 敵の数だけループする
            for (int i = 0; i <= _enemies.Count - 1; i++)
            {
                // 敵の移動イベントを呼ぶ
                ((CEnemy)_enemies[i]).MvEnm();
                // ループの中でDoEventsを呼んでおく
                Application.DoEvents();
            }
        }

次に残り時間をカウントする処理です。
制限時間内は、プログレスバーのカウントを一つ下げて、制限時間を過ぎた場合は、合計得点を表示し、タイマーを止めます。
T_JikanのTickイベントに以下を記述します。

        /// <summary>
        /// 残り時間を計測
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void T_Jikan_Tick(object sender, EventArgs e)
        {
            if ((PG_Jikan.Minimum) <= (PG_Jikan.Value - 1))
            {
                // プログレスバーを一つ下げる
                PG_Jikan.Value--;
            }
            else
            {
                // 終わり
                PG_Jikan.Value = PG_Jikan.Minimum;
                // タイマーを止める
                T_Enemy.Enabled = false;
                T_Jikan.Enabled = false;
                // メッセージを表示
                MessageBox.Show("終了です\nあなたの得点は" + L_Sum.Text + "です");
                // メイン画面を閉じる
                Close();
            }
        }

続いてすでに実装したスタートボタンのクリックイベント(B_Start_Click)に、タイマーのスタート処理を追加します。

        /// <summary>
        /// スタートボタンクリック
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void B_Start_Click(object sender, EventArgs e)
        {
            // スタートボタンを使えなくする
            B_Start.Enabled = false;

            // 敵を生成します
            for (int i = 0; i <= 9; i++)
            {
                // 配列に敵クラスを生成します。その際にオーナーのパネルとランダム変数を渡します。
                _enemies.Add(new CEnemy(P_Enemy, _rnd));
                // ループの中でDoEventsを呼んでおく
                Application.DoEvents();
            }

            // タイマーのスタート
            T_Enemy.Enabled = true;
            T_Jikan.Enabled = true;
        }

ここで一度実行してみましょう。
初級ボタンを押して、スタートボタンを押すと今度は敵が動いていると思います。
また残り時間もカウントダウンされ、プログレスバーが0になるとメッセージが表示され終了となります。

ここまでくればあともう一息です。
またうまく動かない敵があれば、コーディングにミスがあるかもしれませんので、確認しておきましょう。

コメント

タイトルとURLをコピーしました