指定した時間が経過するとプロ生ちゃんが音声で教えてくれるプログラムです。
デフォルトは3分ですが変更可能です。
サンプルの動作動画では3分も待てないので5秒に変更しています。
画面は現在の経過時刻を表示する領域(label1)と時間を指定する(tb_jikan)、プロ生ちゃんを表示する(pictureBox1)、開始停止のボタン(button1,button2)で構成されています。
画像と音声はプロ生ちゃんの素材を使用しています。
プログラムの解説:
・変数の有効な範囲がよくわからなかったので(グローバル変数? 局所変数?)、GLOBAL.d1という変数を作っていますが、もっとシンプルにできそうな気がします。
・起動時に暮井慧の音声について注意を表示しています。本当はポップアップウインドウで表示し、OKを押すとプログラムを開始したかったのですが、別ウインドウを表示させる方法がわからなかったので、注意書きを画像ファイルで用意しStartボタンを押してカウントを開始するまで表示しています(メッセージウインドウをポップアップしたいですね)。
・指定時間はデフォルトで3分、テキストボックス内を書き換えることができますが、内容については未チェックかつ文字列で比較しているので、時刻以外の文字列にしても動作します(が一致することがないので終了しません)、既に経過した時刻も指定できます(が一致することがないので終了しません、もしかすると何日かで1周して一致するかも?)
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 _3minutes
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
GLOBAL.d1 = DateTime.Now;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
GLOBAL.d1 = DateTime.Now;
pictureBox1.Image = Properties.Resources.sd_eye0;
}
private void button2_Click(object sender, EventArgs e)
{
pictureBox1.Image = Properties.Resources.sd02;
timer1.Stop();
}
public static class GLOBAL
{
public static DateTime d1;
}
private void playsound()
{
SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources.kei_voice_062);
player.Play();
}
private void timer1_Tick(object sender, EventArgs e)
{
DateTime d2 = DateTime.Now;
TimeSpan ts1 = d2 - GLOBAL.d1;
String ts1s = Convert.ToDateTime(ts1.ToString()).ToLongTimeString();
label1.Text = ts1s;
if (ts1s.Equals(tb_jikan.Text))
{
playsound();
pictureBox1.Image = Properties.Resources.sd05;
timer1.Stop();
}
}
}
}