예제 #1
0
        static void Main(string[] args)
        {
            //通信で受け取る

            //ゲームマスターの初期化
            GameMaster.Initialize();

            //表示

            //GUIWebSocket接続
            //プログラム実行中は常時稼働しているため実際にはguiResultを使わない(終了処理がしたくなったときのため)
            var guiResult = ComuShow.StartWaitingForReceptionFromGUI();

            //Command入力待ち
            GameMaster.CommandRequest();
        } //End_Method
예제 #2
0
        }         //End_Method

        /// <summary>
        //	遷移ターン終了時の処理
        /// </summary>
        private static void ProcessOfEndOfInterval()
        {
            //作戦ターンタイマーを起動
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("作戦ターン時間");
            Console.WriteLine("StartedAt : " + GameMaster.StartedAtUnixTime);
            Console.WriteLine("TurnMills : " + GameMaster.TurnMillis);
            Console.WriteLine("IntervalM : " + GameMaster.IntervalMillis);
            Console.WriteLine("ElapsedTu : " + GameMaster.GetNowUnixTimeMilliSeconds());
            Console.WriteLine("ElapsedTu : " + GameMaster.Table.ElapsedTurn);
            Console.WriteLine("TimerTurn : " + (GameMaster.StartedAtUnixTime + (GameMaster.TurnMillis * (GameMaster.Table.ElapsedTurn + 1)) + (GameMaster.IntervalMillis * (GameMaster.Table.ElapsedTurn)) - GameMaster.GetNowUnixTimeMilliSeconds()));
            Console.ForegroundColor       = ConsoleColor.White;
            GameMaster.TurnTimer.Interval = GameMaster.StartedAtUnixTime + (GameMaster.TurnMillis * (GameMaster.Table.ElapsedTurn + 1)) + (GameMaster.IntervalMillis * (GameMaster.Table.ElapsedTurn)) - GameMaster.GetNowUnixTimeMilliSeconds();
            GameMaster.TurnTimer.Start();

            //フィールド情報を取得
            Console.WriteLine("フィールド情報を取得します");
            while (!GameMaster.GetFieldInfo())
            {
                System.Threading.Thread.Sleep(100);
                Console.WriteLine("再度,フィールド情報を取得します");
            }             //End_While
            GameMaster.IsAlreadyGotFiledInfo = true;

            //各Solverのフィールド情報を更新
            for (int i = 0; i < GameMaster.Table.AgentNum; ++i)
            {
                //Solverの型情報を取得
                var type = GameMaster.Table.MyTeam.Agents[i].Solver.GetType();
                //GameMaster.Table.MyTeam.Agents[i].Solver.Dispose();
                var seed = GameMaster.RandomToSolver.Next();

                GameMaster.Table.MyTeam.Agents[i].Solver = (Solver_Abstract)Activator.CreateInstance(type, new object[] { GameMaster.Table, seed });
            }             //End_For
                          //GUIからSolver自体の更新がある場合(上書き)
            for (int i = 0; i < GameMaster.RequestsChangeAgentType.Count; ++i)
            {
                for (int j = 0; j < GameMaster.Table.MyTeam.Agents.Length; ++j)
                {
                    if (GameMaster.RequestsChangeAgentType[i].AgentID == GameMaster.Table.MyTeam.Agents[j].AgentID)
                    {
                        //攻撃型のとき
                        if (GameMaster.RequestsChangeAgentType[i].Tactics == "Attack")
                        {
                            GameMaster.Table.MyTeam.Agents[j].Solver = new Solver_Bebebe(GameMaster.Table);
                        }                         //End_If
                        else if (GameMaster.RequestsChangeAgentType[i].Tactics == "Deffence")
                        {
                        }
                        else if (GameMaster.RequestsChangeAgentType[i].Tactics == "Obstruction")
                        {
                        }
                    }     //End_If
                }         //End_For
            }             //End_For
            GameMaster.RequestsChangeAgentType = new List <_ReceiveChangeAgentType>();
            Console.WriteLine("Solverの更新を完了しました");

            //データ送信用タイマーを起動
            GameMaster.ActionSendTimer.Start();

            //遷移ターンタイマーをリセット
            GameMaster.IntervalTimer.Stop();

            //GUI更新(非同期)
            var task = ComuShow.SendFieldInfoToComuShowAsync(JsonToMyFormat.FieldInfoToComuShowField());

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine();
            Console.WriteLine("ターン:" + (GameMaster.Table.ElapsedTurn) + " 作戦ターン開始!\r\n");
            Console.ForegroundColor = ConsoleColor.White;
        }         //End_Method