Happy Birthdayプログラムで無事に誕生日を迎えました。
皆さん
こんにちは、こんばんは
TomoProgです。
今年の誕生日はコンピュータに一番最初に祝ってもらったので、
その道程を書いておきます。
それでは頑張っていきましょう。
40分前
あ、明日誕生日だ。
完全に忘れていた誕生日をふと思い出す。
しかし、誕生日になる瞬間を祝ってくれる人はいない。
「コンピュータに祝ってもらおう」
寂しい40分が開幕した。
35分前
どうやって祝ってもらおう。
とりあえず、カウントダウンして欲しい。
あと、曲も歌って欲しい。
ということで、
- 誕生日までのカウントダウン
- 誕生日曲の再生
をしてくれるプログラムを作る。
30分前
コーディング開始。
まずはカウントダウンの部分を実装する。
C#ではDateTime型を使用すれば
簡単に日時を取得することができる。
// 自分の誕生日を指定 DateTime birthday = new DateTime(2017, 3, 6); // 現在時刻から誕生日までの残りの日時を計算 TimeSpan ts = birthday - DateTime.Now;
計算結果はTimeSpan型として保持する。
TimeSpan型のプロパティを参照すれば残りの日時を確認できる。
// 出力例:1Days 10:20:30.400 Console.WriteLine("{0}Days {1}:{2}:{3}.{4}" , ts.Days , ts.Hours , ts.Minutes , ts.Seconds , ts.Milliseconds);
これでカウントダウンは完了。
20分前
誕生日曲の再生部分を実装する。
まずは、音声ファイルを手に入れるため、
以下のサイトを利用し、YouTubeから音声ファイルを抽出。
www.onlinevideoconverter.com
ちなみに誕生日曲はコブクロの「Happy Birthday」を選曲。
www.youtube.com
C#にはwavファイルであれば簡単に再生できる
SoundPlayerというクラスが用意されている。
// 再生するwaveファイルを指定 SoundPlayer player = new SoundPlayer("happybirthday.wav"); // 再生する player.PlaySync();
これでどちらの機能も実装が完了。
コードは全部で40行ほど。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.Media; namespace HappyBirthday { class Program { static void Main(string[] args) { DateTime birthday = new DateTime(2017, 3, 6); SoundPlayer player = new SoundPlayer("../../happybirthday.wav"); while (true) { Console.WriteLine("■■ Happy Birthday Countdown ■■"); TimeSpan ts = birthday - DateTime.Now; if (ts.TotalMilliseconds < 0) { break; } Console.WriteLine("{0}Days {1}:{2}:{3}.{4}" , ts.Days , ts.Hours.ToString().PadLeft(2, '0') , ts.Minutes.ToString().PadLeft(2, '0') , ts.Seconds.ToString().PadLeft(2, '0') , ts.Milliseconds); Thread.Sleep(30); Console.Clear(); } Console.WriteLine("Happy Birthday!!"); player.PlaySync(); } } }
5分前
カウントダウンプログラムを起動させる。
とりあえず、カウントダウンはうまくいっている様子。
今年あった出来事を心の中で振り返る。
1分前
テストしていないため、音声鳴らなかったらどうしようと不安になる。
5秒前
ラスト5秒!
Happy BirthDay!!
誕生日!
この時点でコブクロの「Happy Birthday」も流れる。
まとめ
- 1歳老けた。
- 寂しさが込み上げてきた。
こんな感じで40分でHappy Birthdayプログラムを作ってみました。
うん。
誰か祝ってください。
TomoProg