Skip to content

Instantly share code, notes, and snippets.

@nabesi777
Created November 8, 2018 16:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nabesi777/10fbaaf7dc49e4e36490d44cbef88a72 to your computer and use it in GitHub Desktop.
Save nabesi777/10fbaaf7dc49e4e36490d44cbef88a72 to your computer and use it in GitHub Desktop.
C# アラーム時計
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Media;
namespace AlarmClock
{
public partial class Form1 : Form
{
private SoundPlayer player = null;
public Form1()
{
InitializeComponent();
timer1.Start();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = Application.ProductName;
//タイマーの初期設定
timer1.Interval = 1000;
timer1.Enabled = true;
this.buttonStart.Enabled = false; //最初はタイマーボタンを押せない
}
//時刻表示、時報機能
private void timer1_Tick(object sender, EventArgs e)
{ //時刻表示
DateTime d = DateTime.Now;
時刻.Text = string.Format("{0:00}時{1:00}分{2:00}秒", d.Hour, d.Minute, d.Second);
//時刻表示のフォント設定
時刻.Font = new Font(label1.Font.FontFamily, 33);
//毎時間セットした分数に音を鳴らす
int timeSignal = 58; //基本は58分にセット
SetTime.Text = timeSignal.ToString(); //テキストボックスへ58を書き込む
string st = SetTime.Text.ToString(); //テキストボックスへ記入された文字列を読み取り
if (int.TryParse(st, out timeSignal))//int型にできたら下記ブロックを実行
{ //現在時刻分数とセットタイムが同じ場合且つ0秒の場合に呼び出し
if (d.Minute == timeSignal && d.Second == 0)
{
PlaySound(@"F:\unity\サウンド\効果音\鳥のさえずり.wav");//音を鳴らす
}
}
//指定した分数に一回だけ音を鳴らす
int setOneTime;
string sm = setMinute.Text.ToString();  //記入された文字列を読み取り
if (int.TryParse(sm, out setOneTime))    //int型にできたら下記ブロックを実行
{//現在時刻分数とセットタイムが同じ場合且つ0秒の場合に呼び出し
if (d.Minute == setOneTime && d.Second == 0)
{
PlaySound(@"F:\unity\サウンド\効果音\鳥のさえずり.wav"); //音を鳴らす
setMinute.ResetText(); //テキストボックスをクリアにする
}
}
}
int endTime;  //テキストボックスへ入力した数値を代入する変数
int nowTime;  //時間をカウントする変数
//カウントダウンタイマー
private void timerControl_Tick(object sender, EventArgs e)
{
int RmainingTime;
nowTime++;
RmainingTime = endTime - nowTime; //残り時間を計算
//残り時間をlabel(名前:textRmainingTime)へ表示
textRmainingTime.Text = RmainingTime.ToString();
//残り時間のフォント設定
textRmainingTime.Font = new Font(textRmainingTime.Font.FontFamily, 20);
//カウントダウンが0になったら
if (endTime == nowTime)
{ //カウントダウンを止める
timerControl.Stop();
//音を鳴らす 音素材のファイル場所を指定 =@""
PlaySound(@"F:\unity\サウンド\効果音\流れ星.wav");
//テキストをリセット
textSetTime.ResetText();
nowTime = 0; //nowTimeをリセット
}
else
{
StopSound();    //それ以外は音を鳴らさない
}
}
//タイマーのスタートメソッド
private void SetCountDownTimer()
{
//入力された文字列を数値へ変換できればendTimeに数値を代入して実行
if (int.TryParse(textSetTime.Text, out endTime))
{
nowTime = 0; //カウント時間を0にセットしてスタート
timerControl.Start();
}
}
//スタートボタンを押してカウントダウンタイマーをスタート
private void buttonStart_Click(object sender, EventArgs e)
{
SetCountDownTimer();
}
//エンターキーを押してカウントダウンタイマーをスタート
private void textSetTime_KeyDown(object sender, KeyEventArgs e)
{ //Enterを押す&&入力が数字だった場合
if ((e.KeyCode == Keys.Enter))
{
SetCountDownTimer();
}
}
//カウントダウンタイマーテキストボックスへの入力イベント
private void textSetTime_TextChanged(object sender, EventArgs e)
{
int num;
//入力された文字列がint型に変換できれば、タイマースタートボタンが有効
this.buttonStart.Enabled = int.TryParse(this.textSetTime.Text, out num);
}
//WAVEファイルをSoundPlayerメソッドで再生する
private void PlaySound(string SoundFile)
{  //SoundPlayerのインスタンスを生成
SoundPlayer player = new SoundPlayer();
//音素材の場所を引数:SoundFileNameより取得
player.SoundLocation = SoundFile;
player.Play();
}
//SoundPlayerをオフにする
private void StopSound()
{  //playerが動いている時
if (player != null)
{
player.Stop();
player.Dispose();
player = null;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment