こんにちは、きうちです。
今日は、前回の「あれを作る(前編)」の続きをお送りします。
前回は、円盤を番号順にクリックすると消えていき、全部消すとクリア、というところまで作りました。
今回はそれを、次のようにしてみたいと思います。
- クリアするごとに円盤が小さくなっていく
- 経過時間を表示し、タイムアタックができるようにする
★ ★ ★
まず、「クリアするごとに円盤が小さくなっていく」の仕込み。
せっかくなので、クリアするごとに「レベル」が上がっていき、それが表示されるようにもしましょう。
フィールド変数として、現在のレベルを示す「level」という変数を追加し、1で初期化します。
これを、クリアするごとに +1 するとともに、半径 r を減らします。
とりあえず 7 ずつ減らすことにしましょうか。クリアするごとに 32→25→18→11→4 と減っていきます。
レベルは、ラベルを1個フォームデザイナから追加しておいて、そこに表示することにしましょうかね。

このレベルを増やしたり、半径を減らしたりする処理を「DoLevelUp」という名前のメソッドで宣言しておきます。
int level = 1; // 現在レべル
private void DoLevelUp() // レベルアップする
{
r -= 7; // 半径を7減らす
if (r <= 0) r = 32; // 半径が0またはマイナスになってしまったら、32に戻す
level++; // レベルの値を1増やす
label1.Text = "レベル: " + level.ToString(); // レベルの値を表示する
}
そしてこれを、クリア時の処理で呼び出します。
private void Form1_MouseClick(object sender, MouseEventArgs e) // フォームマウスクリック時処理
{
int erasedCount = 0; // 消去カウンタ初期化
int totalErasedCount = 0; // トータル消去カウンタ初期化
(略)
if (totalErasedCount == list.Count) // 円盤が全部消去されたら
{
MessageBox.Show(this, "Clear!"); // Clear!とメッセージボックスで表示
DoLevelUp(); // 【後編】追加
StartNewGame(); // 新規ゲーム開始
}
}
実行してみます。





クリアするごとにどんどん小さくなっていきます!レベル5にもなると、だいぶクリックしづらいですね。
難易度が上がっていくようになりました!
★ ★ ★
では、今度は時間の表示。
経過時間を保持するフィールド変数 elapsed を追加します。
また、タイマーのフィールド変数 timTimer を追加して、そのTICK処理も用意します。
TICK時処理ではelapsedを1増やすことにします。
表示をするためのラベルも追加しておきます。

private System.Windows.Forms.Timer timTimer = new System.Windows.Forms.Timer(); // タイマー
private int elapsed = 0; // 経過時間
private void timTime_Tick(object? sender, EventArgs e) // タイマーTICK時処理
{
elapsed++; // 経過時間を1増やす
label2.Text = "時間: " + elapsed.ToString(); // 経過時間を表示する
}
コンストラクタに timTimer をセットして開始させる処理を追加します。
public Form1() // コンストラクタ
{
InitializeComponent();
timTimer.Interval = 1000; // 【後編】追加
timTimer.Tick += timTime_Tick; // 【後編】追加
StartNewGame(); // 新規ゲーム開始
}
インターバルは1秒(1000ミリ秒)にします。
Tickイベントに先ほど宣言したメソッドを追加します。
StartNewGameメソッドに経過時間をリセットし、タイマーを開始させる処理を追加します。
public void StartNewGame() // 新規ゲーム開始
{
list.Clear(); // リストクリア
(略)
currentNo = 1;
elapsed = 0; // 【後編】追加
timTimer.Start(); // 【後編】追加
}
実行してみましょう。
・・・経過時間が表示されるようになりましたね!
★ ★ ★
というわけで、今日はここまで。
これからますます寒くなっていきます。お体にお気をつけてお過ごしください!
ではでは~
★ ★ ★
追伸
ソースを公開しました。どうぞご覧ください。
こちら。