static void Main(string[] args) { //通信で受け取る //ゲームマスターの初期化 GameMaster.Initialize(); //表示 //GUIWebSocket接続 //プログラム実行中は常時稼働しているため実際にはguiResultを使わない(終了処理がしたくなったときのため) var guiResult = ComuShow.StartWaitingForReceptionFromGUI(); //Command入力待ち GameMaster.CommandRequest(); } //End_Method
} //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