示例#1
0
        public override void NightAction(List <Person> JoinPlayers)
        {
            CommonLibrary.ChangeDisplayColor(1);
            DisplayThisCast();

            CommonLibrary.wait(10);
        }
示例#2
0
        /// <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);
            }
        }
示例#3
0
 /// <summary>
 /// 画面の色による説明
 /// </summary>
 static void DisplayColor()
 {
     CommonLibrary.ChangeDisplayColor(0);
     Console.WriteLine("この人狼アプリケーションは、画面の色によって操作する人が異なります。");
     Console.WriteLine("画面の色は3色あり、全員で操作したり見たりするとき、操作する人を代えるとき、一人で操作するときで異なります。");
     Console.ReadKey();
 }
示例#4
0
 /// <summary>
 /// すべての人のチュートリアル
 /// </summary>
 static void AllPerson()
 {
     CommonLibrary.ChangeDisplayColor(0);
     Console.WriteLine("画面がこの色のときは、参加者全員が画面を見るときです。");
     Console.WriteLine("この色の画面のときは、みんなで画面を確認してください。");
     Console.ReadKey();
 }
示例#5
0
        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);
        }
示例#6
0
 /// <summary>
 /// 操作変更のチュートリアル
 /// </summary>
 static void ChangePerson()
 {
     CommonLibrary.ChangeDisplayColor(2);
     Console.WriteLine("画面がこの色のときは、参加者のうち、画面を見て操作する人を変更するときです。");
     Console.WriteLine("この画面を見た人は、画面に出ている次の人に、操作を代わってください。");
     Console.WriteLine("代わったら、その人はEnterキーを押してください。");
     Console.ReadKey();
 }
示例#7
0
        public override void NightAction(List <Person> JoinPlayers)
        {
            CommonLibrary.ChangeDisplayColor(1);
            DisplayThisCast();
            //Console.WriteLine("10秒間待機してください。");

            CommonLibrary.wait(10);
        }
示例#8
0
 /// <summary>
 /// 1人の操作のチュートリアル
 /// </summary>
 static void OnePerson()
 {
     CommonLibrary.ChangeDisplayColor(1);
     Console.WriteLine("画面がこの色のときは、特定の参加者のみが画面を見るときです。");
     Console.WriteLine("他の人は画面を見てはいけません。");
     Console.WriteLine("画面を見る人は前の緑色の画面で指示されるので、その人のみ画面を見てください。");
     Console.ReadKey();
 }
示例#9
0
        /// <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));
        }
示例#10
0
        /// <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();
            }
        }
示例#11
0
        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);
        }
示例#12
0
        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);
        }
示例#13
0
        /// <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();
        }
示例#14
0
        /// <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);
            }
        }
示例#15
0
        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);
        }
示例#16
0
        /// <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);
            }
        }
示例#17
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;
        }
示例#18
0
        /// <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);
        }
示例#19
0
 /// <summary>
 /// 「あなたは{役職名}です」を表示
 /// </summary>
 public void DisplayThisCast()
 {
     Console.Write("あなたは");
     CommonLibrary.WriteCastColor(this.Position);
     Console.WriteLine("です。");
 }
示例#20
0
        /// <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();
            }
        }