前書き
まだコードを書くことにあまり慣れていないので
とりあえず何かを作ってみようと思いました。
自分は音楽が好きなのでメトロノーム的なものを作ってみました。
具体的にどんなものかというと、
自分が欲しいBPMを入力すると ※BPM…Beats Per Minuteの略。
●がその速度で点滅するというものです。 1分間に何回のリズムが刻まれているかを示す。
コード
class Metronome
{
//任意のタイミングで終了させるためのもの
static bool End = false;
static void Main()
{
Console.WriteLine("BPMを入力してください。");
//BPMの入力
var BPM = int.Parse(Console.ReadLine());
Console.WriteLine("");
Console.WriteLine("設定したBPMで●が時を刻みます。");
Console.WriteLine("終了したい場合はEnterキーを押してください。");
Console.WriteLine("");
//3秒のカウントダウン
for (int timer = 3; 1 <= timer; timer--)
{
Console.CursorLeft = 0;
Console.Write("開始まで{0}秒", timer);
Thread.Sleep(1000);
}
Console.CursorLeft = 0;
Console.WriteLine("開始まで0秒");
Console.WriteLine("");
//処理の予約(実行可能な時に発動)
ThreadPool.QueueUserWorkItem(new WaitCallback(PushKey));
//キー入力があるまで設定BPMで点滅
while (true)
{
Console.CursorLeft = 0;
Console.Write("●");
Thread.Sleep(6000 / BPM);
Console.CursorLeft = 0;
Console.Write(" ");
Thread.Sleep(54000 / BPM);
if (End)
{
break;
}
}
}
//キー入力でEndをtrueに
static void PushKey(object State)
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
End = true;
}
}
後書き
内容的にはシンプルですが、
一つ自分が作りたいものを作れたので
良かったなと思います。
次回も何か作るなら、
もう少し凝ったものを作りたいなと思います。