コード例 #1
0
ファイル: AIWolfGame.cs プロジェクト: AIWolfSharp/AIWolfSharp
        /// <summary>
        /// First, all agents have chances to talk.
        /// Next, wolves whispers.
        /// Continue them until all agents finish talking.
        /// </summary>
        public void Talk()
        {
            List <Agent> overList = new List <Agent>();

            for (int i = 0; i < gameSetting.MaxTalk; i++)
            {
                bool continueTalk = false;

                List <Agent> aliveList = AliveAgentList.Union(overList).Shuffle().ToList();
                foreach (Agent agent in aliveList)
                {
                    if (overList.Contains(agent))
                    {
                        continue;
                    }
                    string talkContent = gameServer.RequestTalk(agent);
                    if (talkContent != null)
                    {
                        if (talkContent.Length != 0)
                        {
                            Talk sentence = new Talk(gameData.NextTalkIdx, gameData.Day, agent, talkContent);
                            gameData.AddTalk(agent, sentence);
                            if (!talkContent.Equals(Common.Data.Talk.OVER))
                            {
                                continueTalk = true;
                                overList.Clear();
                            }
                            else
                            {
                                overList.Add(agent);
                            }
                            if (GameLogger != null)
                            {
                                GameLogger.Log(string.Format("{0},talk,{1},{2},{3}", gameData.Day, sentence.Idx, agent.AgentIdx, sentence.Content));
                            }
                        }
                    }
                }
                Whisper();

                if (!continueTalk)
                {
                    break;
                }
            }
        }
コード例 #2
0
ファイル: AIWolfGame.cs プロジェクト: AIWolfSharp/AIWolfSharp
        /// <summary>
        /// Whisper by werewolf.
        /// </summary>
        public void Whisper()
        {
            List <Agent> overList = new List <Agent>();

            for (int j = 0; j < gameSetting.MaxTalk; j++)
            {
                bool         continueWhisper = false;
                List <Agent> aliveList       = AliveAgentList.Union(overList).Shuffle().ToList();
                foreach (Agent agent in aliveList)
                {
                    if (gameData.GetRole(agent) == Role.WEREWOLF)
                    {
                        if (overList.Contains(agent))
                        {
                            continue;
                        }
                        string whisperContent = gameServer.RequestWhisper(agent);
                        if (whisperContent != null && whisperContent.Length != 0)
                        {
                            Talk whisper = new Talk(gameData.NextWhisperIdx, gameData.Day, agent, whisperContent);
                            gameData.AddWhisper(agent, whisper);
                            if (!whisperContent.Equals(Common.Data.Talk.OVER))
                            {
                                continueWhisper = true;
                                overList.Clear();
                            }
                            else
                            {
                                overList.Add(agent);
                            }

                            if (GameLogger != null)
                            {
                                GameLogger.Log(string.Format("{0},whisper,{1},{2},{3}", gameData.Day, whisper.Idx, agent.AgentIdx, whisper.Content));
                            }
                        }
                    }
                }
                if (!continueWhisper)
                {
                    break;
                }
            }
        }