public override void NightAction(List <Person> JoinPlayers) { CommonLibrary.ChangeDisplayColor(1); DisplayThisCast(); CommonLibrary.wait(10); }
/// <summary> /// 次の週に入る画面 /// </summary> /// <returns>ゲームが終わって次の週に入らない場合はtrue</returns> public bool ContinueDisplay() { bool?isContinue = ContinueGame(); //勝敗が決まった if (isContinue != null) { CommonLibrary.ChangeDisplayColor(0); bool VillegeVictory = (bool)isContinue; //村人の勝ち if (VillegeVictory) { DisplayLibrary.ColorConsole("村人", Villager.Forground, Villager.Background); } else //人狼の勝ち { DisplayLibrary.ColorConsole("人狼", Wolf.Forground, Wolf.Background); } Console.WriteLine("の勝利。\n"); Console.WriteLine("役職一覧"); DisplayCast(); return(true); } else { return(false); } }
/// <summary> /// 画面の色による説明 /// </summary> static void DisplayColor() { CommonLibrary.ChangeDisplayColor(0); Console.WriteLine("この人狼アプリケーションは、画面の色によって操作する人が異なります。"); Console.WriteLine("画面の色は3色あり、全員で操作したり見たりするとき、操作する人を代えるとき、一人で操作するときで異なります。"); Console.ReadKey(); }
/// <summary> /// すべての人のチュートリアル /// </summary> static void AllPerson() { CommonLibrary.ChangeDisplayColor(0); Console.WriteLine("画面がこの色のときは、参加者全員が画面を見るときです。"); Console.WriteLine("この色の画面のときは、みんなで画面を確認してください。"); Console.ReadKey(); }
override public void NightAction(List <Person> people) { //DisplayLibrary.ChangeColorClear(CommonLibrary.OnePerson); CommonLibrary.ChangeDisplayColor(1); DisplayThisCast(); if (Otherwolf.Where(x => (x != this) && (x.isDead == false)).ToList().Count != 0) { Console.Write("他の人狼は"); foreach (Wolf w in Otherwolf.Where(x => (x != this) && (x.isDead == false))) { Console.Write("{0}さん ", w.PlayerName); } Console.WriteLine("です。"); } DateTime start = DateTime.Now; Person target = ListUpMember(people.Where(x => x.Position != PlayerPosition.Werewolf).ToList(), "今日のターゲットを選んでください。"); target.isTarget = true; DateTime end = DateTime.Now; Console.WriteLine("{0}さんを襲います。", target.PlayerName); CommonLibrary.TimeSpanWait(start, end); }
/// <summary> /// 操作変更のチュートリアル /// </summary> static void ChangePerson() { CommonLibrary.ChangeDisplayColor(2); Console.WriteLine("画面がこの色のときは、参加者のうち、画面を見て操作する人を変更するときです。"); Console.WriteLine("この画面を見た人は、画面に出ている次の人に、操作を代わってください。"); Console.WriteLine("代わったら、その人はEnterキーを押してください。"); Console.ReadKey(); }
public override void NightAction(List <Person> JoinPlayers) { CommonLibrary.ChangeDisplayColor(1); DisplayThisCast(); //Console.WriteLine("10秒間待機してください。"); CommonLibrary.wait(10); }
/// <summary> /// 1人の操作のチュートリアル /// </summary> static void OnePerson() { CommonLibrary.ChangeDisplayColor(1); Console.WriteLine("画面がこの色のときは、特定の参加者のみが画面を見るときです。"); Console.WriteLine("他の人は画面を見てはいけません。"); Console.WriteLine("画面を見る人は前の緑色の画面で指示されるので、その人のみ画面を見てください。"); Console.ReadKey(); }
/// <summary> /// 引数で与えられたプレイヤーを選択させる画面を表示する。(自分は表示しない) /// (生きてる人だけ) /// </summary> /// <param name="JoinPlayers">プレイヤー</param> /// <returns>選択されたプレイヤー</returns> public Person ListUpMember(List <Person> JoinPlayers, string message = "プレイヤーを選んでください。") { //Person output = null; //bool isDisplayed = false; List <Person> LivingPeople = JoinPlayers.Where(x => (x.isDead == false) && (x != this)).ToList(); return(CommonLibrary.StaticListUpMember(LivingPeople, message)); }
/// <summary> /// 配役表示 /// </summary> public void DisplayCast() { int width = Players.Select(x => DisplayLibrary.StringCount(x.PlayerName)).ToList().Max() + 4; foreach (Person p in Players) { string displayname = p.PlayerName + new string(' ', width - DisplayLibrary.StringCount(p.PlayerName)); Console.Write(displayname); CommonLibrary.WriteCastColor(p.Position); Console.WriteLine(); } }
override public void NightAction(List <Person> people) { CommonLibrary.ChangeDisplayColor(1); DisplayThisCast(); DateTime start = DateTime.Now; Person target = ListUpMember(people, "今日の守る人を選んでください。"); target.isProtect = true; DateTime end = DateTime.Now; Console.WriteLine("{0}さんを守ります。", target.PlayerName); CommonLibrary.TimeSpanWait(start, end); }
public override void NightAction(List <Person> JoinPlayers) { CommonLibrary.ChangeDisplayColor(1); DisplayThisCast(); if (Executioned != null) { //Console.WriteLine("10秒間待機してください。"); Console.Write("先程処刑した{0}さんは", Executioned.PlayerName); CommonLibrary.WriteCastColor(Executioned.IsWerewolf); //DisplayLibrary.ColorConsole(Executioned.IsWerewolf.DisplayName(), IsWerewolf.ForgroundColor(), IsWerewolf.BackgroundColor()); Console.WriteLine("です。\n"); } CommonLibrary.wait(10); }
/// <summary> /// 処刑を実行する /// </summary> public void execution() { CommonLibrary.ChangeDisplayColor(0); Person p = CommonLibrary.StaticListUpMember(Players.Where(x => (x.isDead == false)).ToList(), "今夜処刑する人を選んでください。"); p.isDead = true; //霊能力者に通知 foreach (Paychic psy in Players.Where(x => x.Position == PlayerPosition.Psychic).ToList()) { psy.Executioned = p; } Console.WriteLine("{0}さんが処刑されました。Enterキーを押してください。", p.PlayerName); Console.ReadKey(); }
/// <summary> /// 夜の行動 /// </summary> public void NightAction() { foreach (var item in Players.Where(x => x.isDead == false).Select((play, count) => new { play, count }).ToList()) { if (item.count == 0) { CommonLibrary.ChangeDisplay("", item.play.PlayerName, "夜の行動に移ります。"); } else { CommonLibrary.ChangeDisplay(Players[item.count - 1].PlayerName, item.play.PlayerName); } item.play.NightAction(Players); } }
override public void NightAction(List <Person> people) { CommonLibrary.ChangeDisplayColor(1); DisplayThisCast(); DateTime start = DateTime.Now; Person target = ListUpMember(people, "今日占う人を選んでください。"); PlayerPosition isWolf = target.IsWerewolf; DateTime end = DateTime.Now; Console.Write("{0}さんは", target.PlayerName); CommonLibrary.WriteCastColor(isWolf); Console.WriteLine("です。"); CommonLibrary.TimeSpanWait(start, end); }
/// <summary> /// 各参加者に役職を確認させる。 /// </summary> public void EachChackCast() { //CommonLibrary.ChangeDisplay("",Players[0].PlayerName,"まず最初に、各自が自分の役職を確認します。"); foreach (var EachPlayer in Players.Select((x, n) => new { x, n }).ToList()) { if (EachPlayer.n == 0) { CommonLibrary.ChangeDisplay("", Players[0].PlayerName, "まず最初に、各自が自分の役職を確認します。"); } else { CommonLibrary.ChangeDisplay(Players[EachPlayer.n - 1].PlayerName, EachPlayer.x.PlayerName); } CommonLibrary.ChangeDisplayColor(1); EachPlayer.x.DisplayThisCast(); CommonLibrary.wait(0); } }
/// <summary> /// 夜の行動後の処理 /// </summary> public void NightProcess() { List <Person> Victim = new List <Person>(); foreach (var p in Players) { //人狼のターゲットか if (p.isTarget == true) { if (p.isProtect == false) { //狩人にガードされてない村人は死 p.isDead = true; Victim.Add(p); } } //フラグを戻す p.isProtect = false; p.isTarget = false; } CommonLibrary.ChangeDisplayColor(0); Console.WriteLine("夜が明けました。"); if (Victim.Count == 0) { Console.WriteLine("昨晩の犠牲者はいませんでした。"); } else { Console.WriteLine("昨晩の犠牲者は"); foreach (Person p in Victim) { Console.WriteLine("{0}さん", p.PlayerName); } Console.WriteLine("の{0}人でした。", Victim.Count()); } Console.WriteLine("Enterキーを押してください。"); Console.ReadKey(); //return Victim; }
/// <summary> /// 参加者の名前を入力させる /// </summary> public void JoinMember() { //DisplayLibrary.ChangeColorClear(CommonLibrary.AllPerson); CommonLibrary.ChangeDisplayColor(0); Console.WriteLine("参加者の名前を入力してください。"); bool loop = true; do { Console.Write("> "); string member = Console.ReadLine(); if (member == "") { loop = false; } else { MemberName.Add(member); } } while (loop); }
/// <summary> /// 「あなたは{役職名}です」を表示 /// </summary> public void DisplayThisCast() { Console.Write("あなたは"); CommonLibrary.WriteCastColor(this.Position); Console.WriteLine("です。"); }
/// <summary> /// 参加者の役職の人数を決める /// </summary> public void DecisionCast() { //DisplayLibrary.ChangeColorClear(CommonLibrary.AllPerson); CommonLibrary.ChangeDisplayColor(0); int MemberCount = MemberName.Count(); //MemberCount cast = new MemberCount(); bool CastCheck = false; /* * PlayerPosition[] castlist = new PlayerPosition[] { * PlayerPosition.Villager, * PlayerPosition.Werewolf, * PlayerPosition.Prophet, * PlayerPosition.Psychic, * PlayerPosition.Guardman, * PlayerPosition.Madman * }; */ while (!CastCheck) { int remaining = MemberName.Count; Console.WriteLine(); foreach (var s in CastEnum.AllCastList().Select((v, i) => new { v, i })) { bool check = false; int n = 0; if (remaining > 0) { Console.WriteLine("{0}の人数を入力してください。(残り人数:{1}人)", s.v.DisplayName(), remaining); } else { check = true; } while (!check) { Console.Write("> "); string input = Console.ReadLine(); try { n = int.Parse(input); remaining -= n; if (remaining < 0) { Console.WriteLine("参加人数よりも多い配役になります。"); remaining += n; } else { check = true; } } catch (FormatException) { Console.WriteLine("数字を入力してください。"); } } //CastCount[s.i] = n; CastCount[s.v] = n; } int sum = CastCount.Select(x => x.Value).Sum(); int WolfCount = CastCount[PlayerPosition.Werewolf] + CastCount[PlayerPosition.Madman]; //int VillagerCount = CastCount[PlayerPosition.Villager] + CastCount[PlayerPosition.Psychic] + CastCount[PlayerPosition.Prophet] + CastCount[PlayerPosition.Guardman]; int VillagerCount = sum - WolfCount; if (sum == MemberName.Count) { if (VillagerCount > WolfCount) { CastCheck = true; } else { Console.WriteLine("人狼陣営が多いです。"); } } else { Console.WriteLine("人数が合いません"); } } Console.WriteLine(); int maxWidth = CastEnum.AllCastList().Select(x => (DisplayLibrary.StringCount(x.DisplayName()))).Max(); foreach (var s in CastEnum.AllCastList().Select((v, i) => new { v, i })) { //DisplayLibrary.ColorConsole("{0}", s.v.ForgroundColor(), s.v.BackgroundColor(), s.v.DisplayName()); CommonLibrary.WriteCastColor(s.v); int space = maxWidth - DisplayLibrary.StringCount(s.v.DisplayName()); //文字スペース Console.Write(new string(' ', space)); Console.WriteLine("{0,5}人", CastCount[s.v]); } bool result = DisplayLibrary.YesOrNo(0, "\nこれでいいですか?"); if (!result) { DecisionCast(); } }