メインフォームの敵を倒す処理の実装
敵クラスの実装が完了しましたので、いよいよメイン画面の敵を倒す処理を実装します。
まずメイン画面(F_Main)にタイマーを二つ追加します。
敵を動かすタイマー(Timer)
プロパティ | 値 | 備考 |
---|---|---|
Name | T_Enemy | |
Interval | 1000 |
残り時間をカウントタイマー(Timer)
プロパティ | 値 | 備考 |
---|---|---|
Name | T_Jikan | |
Interval | 1000 |
まず敵を動かすイベントです。
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になるとメッセージが表示され終了となります。
ここまでくればあともう一息です。
またうまく動かない敵があれば、コーディングにミスがあるかもしれませんので、確認しておきましょう。
\オススメ/
リンク
リンク
リンク
コメント