Skip to content

Instantly share code, notes, and snippets.

@lefirea
Created September 6, 2016 03:21
Show Gist options
  • Save lefirea/3b2b9f5dcd7630f4ed8bcd61b1e519a5 to your computer and use it in GitHub Desktop.
Save lefirea/3b2b9f5dcd7630f4ed8bcd61b1e519a5 to your computer and use it in GitHub Desktop.
using System;
using System.IO;
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;
using Microsoft.SmallBasic.Library;
namespace testform
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 再生するファイル名の保存
class times {
// ○○時
public string ji0;
public string ji1;
public string ji2;
public string ji3;
public string ji4;
public string ji5;
public string ji6;
public string ji7;
public string ji8;
public string ji9;
public string ji10;
public string ji11;
public string ji12;
public string ji13;
public string ji14;
public string ji15;
public string ji16;
public string ji17;
public string ji18;
public string ji19;
public string ji20;
public string ji21;
public string ji22;
public string ji23;
// 〇〇分
public string hun0;
public string hun1;
public string hun2;
public string hun3;
public string hun4;
public string hun5;
public string hun6;
public string hun7;
public string hun8;
public string hun9;
public string hun10;
public string hun20;
public string hun30;
public string hun40;
public string hun50;
public string hun; //分.wav
public string am; //午前.wav
public string pm; //午後.wav
public string ampm; //午前午後の指定があった場合
}
// グローバル関数群
static int half=0; //12時間設定のチェック確認。0=チェック無し、1=チェックあり
static int count = 0;
static string path = Directory.GetCurrentDirectory(); //現在のフォルダパスを取得
static string charaname = @"\voice\Character.txt"; //リストに表示するためのファイルのパス
static string otoplace = @"\oto.txt"; //再生する音源名が書かれたファイルのパス
static string voicename; //再生するボイスの名前(例:傷音ウサ)を格納する
static string line;
static times data = new times(); //再生するファイル名の保存
static Encoding sjis = Encoding.GetEncoding("Shift_JIS"); //Shift_JISを宣言
static StreamReader charafile; //読み込むキャラ名ファイルの保存
static StreamReader voicefile; //読み込む音源名ファイルの保存
static SoundPlayer timeplayer = null; //wavファイル再生用
static SoundPlayer m10player = null;
static SoundPlayer m1player = null;
static SoundPlayer hunplayer = null;
static SoundPlayer amplayer = null;
static SoundPlayer pmplayer = null;
static DateTime datetime = DateTime.Now;
// ×ボタンが押された時
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
e.Cancel = true;
this.Visible = false;
notifyIcon1.Visible = true; //タスクアイコンが消えてしまうから書いたのに効果なし
}
// OK タスクアイコンの"終了"が押された時
private void ExitStripMenuItem1_Click(object sender, EventArgs e)
{
notifyIcon1.Visible = false;
Application.Exit();
}
// OK タスクアイコンの"表示"が押された時
private void OpenStripMenuItem1_Click(object sender, EventArgs e)
{
this.Visible = true;
this.ShowInTaskbar = true;
this.Activate();
}
// OK ボタン"終了"が押された時
private void button4_Click(object sender, EventArgs e)
{
notifyIcon1.Visible = false;
Application.Exit();
}
// OK 最小化された時
private void Form1_Resize(object sender, EventArgs e) {
if (this.WindowState == FormWindowState.Minimized) {
this.ShowInTaskbar = false;
this.Visible = false;
notifyIcon1.Visible = true;
}
}
// YET ボイス名のリスト更新
private void button2_Click(object sender, EventArgs e)
{
comboBox1.Items.Clear(); //コンボボックス初期化
charafile = new StreamReader(path + charaname,sjis); //キャラ名取得
while ((line = charafile.ReadLine()) != null)
{ //各行読み込み
comboBox1.Items.Add(line); //コンボボックスのリストに追加
}
charafile.Close(); //carafile開放
comboBox1.SelectedIndex = 0; //カーソルを先頭に設定
voicename = comboBox1.Items[0].ToString(); //現在選択されているキャラ名を取得
voicefile = new StreamReader(path + @"\voice\" + voicename + otoplace,sjis); //再生する音源ファイル名取得
while ((line = voicefile.ReadLine()) != null)
{ //各行読み込み
cut(line, count); //ファイル名切り出し
count++; //カウントアップ
}
voicefile.Close(); //voicefile開放
count = 0; //カウントリセット
}
// YET 試しに再生
private void button3_Click(object sender, EventArgs e)
{
datetime = DateTime.Now;
if (checkBox1.Checked == true) { //チェックボックスの状況を取得
half = 1;
}
else if (checkBox1.Checked == false) { //チェックボックスの状況を取得
half = 0;
}
fileselect(datetime.Hour, datetime.Minute);
}
// YET 設定の決定
private void button1_Click(object sender, EventArgs e)
{
}
// YET 起動直後
private void Form1_Load(object sender, EventArgs e)
{
charafile = new StreamReader(path + charaname,sjis); //キャラ名取得
while ((line = charafile.ReadLine()) != null) { //各行読み込み
comboBox1.Items.Add(line); //コンボボックスのリストに追加
}
charafile.Close(); //carafile開放
comboBox1.SelectedIndex = 0; //カーソルを先頭に設定
voicename = comboBox1.Items[0].ToString(); //現在選択されているキャラ名を取得
voicefile = new StreamReader(path + @"\voice\" + voicename + otoplace,sjis); //再生する音源ファイル名取得
while ((line = voicefile.ReadLine()) != null) { //各行読み込み
cut(line, count); //ファイル名切り出し
count++; //カウントアップ
}
voicefile.Close(); //voicefile開放
count = 0; //カウントリセット
}
// OK wavファイル名切り出し
static void cut(string dat, int c)
{
string buf;
int checkap=1;
int place = dat.IndexOf("=");
buf = dat.Substring(place + 1);
switch (c)
{
case 1:
data.ji0 = buf;
break;
case 2:
data.ji1 = buf;
break;
case 3:
data.ji2 = buf;
break;
case 4:
data.ji3 = buf;
break;
case 5:
data.ji4 = buf;
break;
case 6:
data.ji5 = buf;
break;
case 7:
data.ji6 = buf;
break;
case 8:
data.ji7 = buf;
break;
case 9:
data.ji8 = buf;
break;
case 10:
data.ji9 = buf;
break;
case 11:
data.ji10 = buf;
break;
case 12:
data.ji11 = buf;
break;
case 13:
data.ji12 = buf;
break;
case 14:
data.ji13 = buf;
break;
case 15:
data.ji14 = buf;
break;
case 16:
data.ji15 = buf;
break;
case 17:
data.ji16 = buf;
break;
case 18:
data.ji17 = buf;
break;
case 19:
data.ji18 = buf;
break;
case 20:
data.ji19 = buf;
break;
case 21:
data.ji20 = buf;
break;
case 22:
data.ji21 = buf;
break;
case 23:
data.ji22 = buf;
break;
case 24:
data.ji23 = buf;
break;
case 25:
data.hun0 = buf;
break;
case 26:
data.hun1 = buf;
break;
case 27:
data.hun2 = buf;
break;
case 28:
data.hun3 = buf;
break;
case 29:
data.hun4 = buf;
break;
case 30:
data.hun5 = buf;
break;
case 31:
data.hun6 = buf;
break;
case 32:
data.hun7 = buf;
break;
case 33:
data.hun8 = buf;
break;
case 34:
data.hun9 = buf;
break;
case 35:
data.hun10 = buf;
break;
case 36:
data.hun20 = buf;
break;
case 37:
data.hun30 = buf;
break;
case 38:
data.hun40 = buf;
break;
case 39:
data.hun50 = buf;
break;
case 40:
data.hun = buf;
break;
case 41:
data.am = buf;
break;
case 42:
data.pm = buf;
break;
default:
break;
}
if (datetime.Hour > 12) {
checkap = datetime.Hour - 12;
}
else if (datetime.Hour <= 12) {
checkap = datetime.Hour;
}
switch (checkap) {
case 1:
data.ampm = data.ji0;
break;
case 2:
data.ampm = data.ji1;
break;
case 3:
data.ampm = data.ji2;
break;
case 4:
data.ampm = data.ji3;
break;
case 5:
data.ampm = data.ji4;
break;
case 6:
data.ampm = data.ji5;
break;
case 7:
data.ampm = data.ji6;
break;
case 8:
data.ampm = data.ji7;
break;
case 9:
data.ampm = data.ji8;
break;
case 10:
data.ampm = data.ji9;
break;
case 11:
data.ampm = data.ji10;
break;
case 12:
data.ampm = data.ji11;
break;
case 13:
data.ampm = data.ji12;
break;
default:
break;
}
}
// YET wavファイル再生
static void playsound(string time, string minute10, string minute1)
{
string timedata = path + @"\voice\" + voicename + @"\" + time;
string minute10data = path + @"\voice\" + voicename + @"\" + minute10;
string minute1data = path + @"\voice\" + voicename + @"\" + minute1;
string hundata = path + @"\voice\" + voicename + @"\" + data.hun;
string amdata = path + @"\voice\" + voicename + @"\" + data.am;
string pmdata = path + @"\voice\" + voicename + @"\" + data.pm;
if (timeplayer != null || m10player != null || m1player != null || hunplayer != null)
{
stop();
}
timeplayer = new SoundPlayer(timedata);
m10player = new SoundPlayer(minute10data);
m1player = new SoundPlayer(minute1data);
hunplayer = new SoundPlayer(hundata);
amplayer = new SoundPlayer(amdata);
pmplayer = new SoundPlayer(pmdata);
//timeplayer.PlaySync();
Sound.PlayAndWait(timedata);
// 10分未満
if (minute10 != "none")
{
//m10player.PlaySync();
Sound.PlayAndWait(minute10data);
}
if (minute1 != "none") //10分,20分,…じゃない場合
{
//m1player.PlaySync();
Sound.PlayAndWait(minute1data);
}
else
{ //10分,20分,…の場合
//hunplayer.PlaySync();
Sound.PlayAndWait(hundata);
}
}
// OK wavファイル再生停止
static void stop()
{
if (timeplayer != null)
{
timeplayer.Stop();
timeplayer.Dispose();
timeplayer = null;
}
if (m10player != null)
{
m10player.Stop();
m10player.Dispose();
m10player = null;
}
if (m1player != null)
{
m1player.Stop();
m1player.Dispose();
m1player = null;
}
if (hunplayer != null)
{
hunplayer.Stop();
hunplayer.Dispose();
hunplayer = null;
}
}
// OK wavファイル選択
static void fileselect(int timedata, int minute)
{
string time, minute10, minute1;
int tmp = minute;
int m10 = 0, m1 = 0;
if (half == 1 && timedata > 12) {
timedata -= 12;
}
// 〇〇時の指定
switch (timedata)
{
case 0:
time = data.ji0;
break;
case 1:
time = data.ji1;
break;
case 2:
time = data.ji2;
break;
case 3:
time = data.ji3;
break;
case 4:
time = data.ji4;
break;
case 5:
time = data.ji5;
break;
case 6:
time = data.ji6;
break;
case 7:
time = data.ji7;
break;
case 8:
time = data.ji8;
break;
case 9:
time = data.ji9;
break;
case 10:
time = data.ji10;
break;
case 11:
time = data.ji11;
break;
case 12:
time = data.ji12;
break;
case 13:
time = data.ji13;
break;
case 14:
time = data.ji14;
break;
case 15:
time = data.ji15;
break;
case 16:
time = data.ji16;
break;
case 17:
time = data.ji17;
break;
case 18:
time = data.ji18;
break;
case 19:
time = data.ji19;
break;
case 20:
time = data.ji20;
break;
case 21:
time = data.ji21;
break;
case 22:
time = data.ji22;
break;
case 23:
time = data.ji23;
break;
default:
time = "none";
break;
}
while (tmp >= 10)
{
tmp -= 10;
m10+=10;
}
m1 = tmp;
switch (m1)
{
case 0:
if (m10 != 0) {
minute1 = "none";
}
else {
minute1 = data.hun0;
}
break;
case 1:
minute1 = data.hun1;
break;
case 2:
minute1 = data.hun2;
break;
case 3:
minute1 = data.hun3;
break;
case 4:
minute1 = data.hun4;
break;
case 5:
minute1 = data.hun5;
break;
case 6:
minute1 = data.hun6;
break;
case 7:
minute1 = data.hun7;
break;
case 8:
minute1 = data.hun8;
break;
case 9:
minute1 = data.hun9;
break;
default:
minute1 = "none";
break;
}
switch (m10)
{
case 10:
minute10 = data.hun10;
break;
case 20:
minute10 = data.hun20;
break;
case 30:
minute10 = data.hun30;
break;
case 40:
minute10 = data.hun40;
break;
case 50:
minute10 = data.hun50;
break;
default:
minute10 = "none";
break;
}
//MessageBox.Show("time="+time+"\nminute10="+minute10+"\nminute1="+minute1, "報告", MessageBoxButtons.OK, MessageBoxIcon.Error);
playsound(time, minute10, minute1);
//Console.WriteLine("time={0}\nminute10={1}\nminute1={2}", time, minute10, minute1);
}
// ウィンドウを隠す
private void button5_Click(object sender, EventArgs e)
{
this.ShowInTaskbar = false;
this.Visible = false;
notifyIcon1.Visible = true;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment