スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【C#】超!簡易アラーム時計をつくる 

いっつもいっつもはお知らせしてくれなくてもいいんだけど、
今日はこの時間になったら知らせてほしい。。。

でもPC画面もみてたいから、
時間になったら音を鳴らして知らせてほしい!

そんな要望にこたえてくれる
超簡易アラーム時計をC#で作ってみます。

C#をお持ちでない方は
ここからダウソ。
?まずC#を起動します。

?フォーム上に
*timer ・・・1つ
*label ・・・5つ
*NumericUpDown・・・2つ
*button・・・2つ
を配置しましょう。
ちなみに配置関係は

al1.gif

赤・・label
青・・NumericUpDown
紫・・button
です。

?
*label、buttonは図を参考に好きな文字にしてみてください。
*NumericUpDownは上限をプロパティから
決めることができます(Maximam,Minimum)

?
今回のアルゴリズムは

現在の時間を取得

ユーザーにアラーム指定時間を設定させる

設定されたことを確認

設定時間が現在時間よりあとか?
↓true      ↓
なにもしない   ↓false
          ↓
音楽を鳴らす(ボタンで再生停止可能)

という単純なものです。

わたしの考えたコード▼---------

using System.Media;
を付け加えた上で
SoundPlayer music = new SoundPlayer(@"pico02.wav");//音楽ファイルをセット


DateTime alarmtime;//現在の時刻を受け取る
int ahour, aminute;//アラーム時刻を時間・分にわけて受け取る
int Setting = 0,Play = 0;
//時刻セットしたかどうか、指定時刻になったかどうか判断(0・false 1・true)
string alarm;//アラーム時刻を合体させる


private void Form1_Load(object sender, EventArgs e)
{
//時計を動かす
timer1.Interval = 1000;
timer1.Enabled = true;

//label1に現在の時間をとって書き込む
label1.Text = DateTime.Now.ToString();//time.ToString();

//label2の初期表示
label2.Text = "指定時刻を決めてください。";
}

private void button1_Click(object sender, EventArgs e)
{
//リストボックスから指定時間を受け取る
ahour = (int)numericUpDown1.Value;
aminute = (int)numericUpDown2.Value;

//指定時間と分をあわせて日付データに変換できる形にする
alarm = ahour + ":" + aminute;

//日付データに変換
alarmtime = DateTime.Parse(alarm);


//label2の表示変化
label2.Text = ahour + ":" + aminute + "\nになったらお知らせします。";

//セットされたをtrueに、プレイされたをfalseにもどす。
Setting = 1;
Play = 0;

}

private void button2_Click(object sender, EventArgs e)
{
//アラームをとめる、ボタンを押すと音楽が止まる。
music.Stop();
}

private void timer1_Tick(object sender, EventArgs e)
{
//label1は常に時間を更新する
label1.Text = DateTime.Now.ToString();


/*常に時間とアラームとの関係を見張りながら
*もしアラーム時間を過ぎたら
*?label2の表示を変更
*?音楽の再生
*?音楽を再生した、をtrueに。
*
* これらの処理は
* アラーム時間が過ぎた
* 指定時刻をセットした
* 時刻セットしてから音楽がまだ鳴っていない
* を満たさないと実行されない。
*
*/
if ((DateTime.Now >= alarmtime) && (Setting == 1) && (Play == 0))
{
label2.Text = "指定時刻です";
music.PlayLooping();
Play = 1;
}

}

となどとするとうまくいくはず。
コピペするだけでいける・・??のか??
まぁ参考程度にしてください。

簡単なコードの説明はコード内にありますので
よんでみてください。

詳しい解析はほかの項でやります。

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

コメントの投稿

Private :

このページのトップへ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。