// マウスupで音量を再設定 private void sliderVolume_MouseUp(object sender, MouseEventArgs e) { mm.Volume = sliderVolume.Value; selectBGM.Dispose(); selectBGMplayer.Stop(); selectBGMplayer.Dispose(); selectBGM = new SpStream(Properties.Resources.BGMselect1); selectBGM.Volume = sliderVolume.Value; selectBGMplayer = new System.Media.SoundPlayer(selectBGM); selectBGMplayer.PlayLooping(); }
// キャラ選択画面 private void Form1_Load(object sender, EventArgs e) { // ループBGMの再生開始 selectBGM = new SpStream(Properties.Resources.BGMselect1); selectBGM.Volume = mm.Volume; sliderVolume.Value = mm.Volume; selectBGMplayer = new System.Media.SoundPlayer(selectBGM); selectBGMplayer.PlayLooping(); // カーソルをオリジナルのものに変更 System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); Cursor myCursor = new Cursor(asm.GetManifestResourceStream(asm.GetName().Name + ".Resources.hand_cursor.cur")); this.Cursor = myCursor; // キャラクタの初期化 mm.chara = 0; }
// エレ子選択 private async void PictEreBig_Click(object sender, EventArgs e) { // エレ子(1)を選択 mm.chara = 1; // ループBGMをとめる selectBGMplayer.Stop(); selectBGMplayer.Dispose(); // リソースを取得して選択終了BGM再生 selectBGM.Dispose(); selectBGM = new SpStream(Properties.Resources.BGMselect2); selectBGM.Volume = sliderVolume.Value; selectBGMplayer = new System.Media.SoundPlayer(selectBGM); selectBGMplayer.Play(); // エレ子よろこんで選択画面終了 Speach("selectE"); await EreSelected(); selectBGMplayer.Dispose(); this.Close(); }
// ゲームメインルーチン private async void PlayGame() { // ボタンを非表示 ButtonChange.Visible = false; ButtonChallenge.Visible = false; RestartButton.Visible = false; OneMoreButton.Visible = false; // ラベル表示 LabelDealer.Text = charaname[chara]; LabelPlayer.Text = "あなた"; DispLabelResult(); // キャラによるループBGMとイメージを設定 switch (chara) { case 0: this.Close(); // 誰も選んでいない break; case 1: // エレ子とゲーム playBGM = new SpStream(Properties.Resources.BGMere1); playBGM.Volume = Volume; CharaPict.Image = Properties.Resources.ere_play; break; case 2: // むいとゲーム playBGM = new SpStream(Properties.Resources.BGMmui1); playBGM.Volume = Volume; CharaPict.Image = Properties.Resources.mui_play; break; default: // ここには来ないはずだけど this.Close(); break; } // リソースを取得してループBGM再生 playBGMplayer = new System.Media.SoundPlayer(playBGM); playBGMplayer.PlayLooping(); // キャラの2枚(乱数) CharaCard[0] = r.Next(0, 25); CharaCard[1] = (CharaCard[0] + r.Next(1, 24)) % 26; // キャラカードの表示(1枚は表、1枚は裏) CardPictChara1.Image = (System.Drawing.Image)Properties.Resources.ResourceManager.GetObject(card[(int)(CharaCard[0] / 13) + 2, (int)(CharaCard[0] % 13)]); CardPictChara2.Image = (System.Drawing.Image)Properties.Resources.card_ura; // プレイヤーの2枚(乱数) PlayerCard[0] = r.Next(0, 25); PlayerCard[1] = (PlayerCard[0] + r.Next(1, 24)) % 26; // プレイヤーカードの表示(2枚とも表) CardPictPlayer1.Image = (System.Drawing.Image)Properties.Resources.ResourceManager.GetObject(card[(int)(PlayerCard[0] / 13), (int)(PlayerCard[0] % 13)]); CardPictPlayer2.Image = (System.Drawing.Image)Properties.Resources.ResourceManager.GetObject(card[(int)(PlayerCard[1] / 13), (int)(PlayerCard[1] % 13)]); // 1/52の確率でプレイヤーにジョーカー if (r.Next(0, 52) == 0) { if (r.Next(0, 2) == 0) { PlayerCard[0] = -1; CardPictPlayer1.Image = (System.Drawing.Image)Properties.Resources.joker; } else { PlayerCard[1] = -1; CardPictPlayer2.Image = (System.Drawing.Image)Properties.Resources.joker; } } // キャラセリフ await Speak(TalkPlay[chara - 1]); // ボタンの表示(マルチスレッド対応メイン) if (this.InvokeRequired) { this.Invoke(new Action(this.DispButtonSub)); } else { ButtonChange.Visible = true; ButtonChallenge.Visible = true; } }
// 勝負ボタンが押されたら private async void ButtonChallenge_Click(object sender, EventArgs e) { int i; int chara_pt; // キャラの値 int player_pt; // プレイヤーの値 // ボタン関係を非表示 ButtonChange.Visible = false; ButtonChallenge.Visible = false; // カードを開ける効果音 Speak("cardOpen"); // キャラカードをターン for (i = 0; i <= 10; i++) { CardPictChara2.Width = (int)(78 * (10 - i) / 10); await Task.Delay(50); } CardPictChara2.Image = (System.Drawing.Image)Properties.Resources.ResourceManager.GetObject(card[(int)(CharaCard[1] / 13) + 2, (int)(CharaCard[1] % 13)]); for (i = 0; i <= 10; i++) { CardPictChara2.Width = (int)(78 * i / 10); await Task.Delay(50); } // 得点計算 chara_pt = CalcPoint(CharaCard[0] % 13 + 1, CharaCard[1] % 13 + 1); player_pt = CalcPoint(PlayerCard[0] % 13 + 1, PlayerCard[1] % 13 + 1); LabelDealer.Text = charaname[chara] + ":" + chara_pt.ToString(); LabelPlayer.Text = "あなた:" + player_pt.ToString(); // ループBGMをとめる playBGMplayer.Stop(); playBGMplayer.Dispose(); // リソースを取得してゲーム終了BGM再生 if (chara == 1) { playBGM = new SpStream(Properties.Resources.BGMere2); playBGM.Volume = Volume; } else { playBGM = new SpStream(Properties.Resources.BGMmui2); playBGM.Volume = Volume; } playBGMplayer = new System.Media.SoundPlayer(playBGM); playBGMplayer.Play(); // 勝敗判定 if (PlayerCard[0] == -1 || PlayerCard[1] == -1) { result[chara, 0]++; DispLabelResult(); LabelPlayer.Text = "あなた:Joker"; await YouWin(); } else if (chara_pt < player_pt) { result[chara, 0]++; DispLabelResult(); await YouWin(); } else if (chara_pt == player_pt) { result[chara, 2]++; DispLabelResult(); await YouDraw(); } else { result[chara, 1]++; DispLabelResult(); await YouLose(); } OneMoreButton.Visible = true; RestartButton.Visible = true; }