/// <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(); } }
/// <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(); } }