} //End_Method /// <summary> /// 作戦ターン中,定期的にサーバに現在のエージェント情報を送信する /// </summary> private static void ProcessOfActionSend() { //情報送信 var json = JsonToMyFormat.AgentBehaviorsToJsonForSendToServer(GameMaster.Table.MyTeam.Agents); Console.WriteLine("jsondata"); Console.WriteLine(json); bool flag; Task.Run(() => ComuSaba.SendActionInformationAsync(json, out flag)); } //End_Method
} //End_Method /// <summary> /// 試合事前情報を取得する /// </summary> private static bool GetAdvancedGameInfo() { bool flag; var json = ComuSaba.GetAdvanceInformation(out flag); //正常に取得できればGameMasterに反映 if (flag && json != "") { JsonToMyFormat.AdvancedGameInfoToVariableOfMyGameMaster(json); GameMaster.IsAlreadyGotGameInfo = true; } //ガバ else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("試合事前情報取得失敗"); Console.ForegroundColor = ConsoleColor.White; } //End_IfElse return(flag); } //End_Method
} //End_Method /// <summary> /// 現在の盤面情報を取得する /// </summary> /// <returns></returns> private static bool GetFieldInfo() { //すでに取得してたらなにもしない if (GameMaster.IsAlreadyGotFiledInfo) { Console.WriteLine("このターンはすでにフィールド情報を取得していますよ"); return(false); } //End_If bool flag; var json = ComuSaba.GetFieldInformationEachTurn(out flag); //正常に取得できればフィールドを更新 if (flag && json != "") { GameMaster.Table = JsonToMyFormat.FieldInfoToMyGameTable(json); } //ガバ else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("フィールド情報取得失敗"); Console.ForegroundColor = ConsoleColor.White; } //End_IfElse return(flag); } //End_Method
} //End_Method /// <summary> /// 送受信,表示等のコマンドを受け付ける /// </summary> /// <returns></returns> public static bool CommandRequest() { Console.WriteLine("コマンド入力受付開始____"); while (true) { var input = Console.ReadLine(); //終了コマンド if (input == "kill") { return(true); } //End_If //試合事前情報取得 else if (input == "gameinfo" || input == "game" || input == "g") { GameMaster.GetAdvancedGameInfo(); } //End_ElseIf //フィールド情報取得 else if (input == "fieldinfo" || input == "field" || input == "f") { GameMaster.GetFieldInfo(); GameMaster.IsAlreadyGotFiledInfo = true; } //End_ElseIf //現在のエージェントの行動情報を送信 else if (input == "sendaction" || input == "send" || input == "s") { //正常動作(オブジェクトが作られている(gameinfo,fieldinfoが実行されている) if (GameMaster.Table != null && GameMaster.Table.MyTeam != null && GameMaster.Table.MyTeam.Agents != null) { var json = JsonToMyFormat.AgentBehaviorsToJsonForSendToServer(GameMaster.Table.MyTeam.Agents); bool flag; var task = Task.Run(() => { ComuSaba.SendActionInformationAsync(json, out flag); Console.WriteLine("Send Action JSON"); Console.WriteLine(json); }); } //だめです else { Console.WriteLine("GameMaster.Table.MyTeam.Agents がnullです"); Console.WriteLine("gameinfo, fieldinfoがすでに実行されているか確認してください"); } //End_IfElse } //End_ElseIf //接続確認 else if (input == "ping" || input == "p") { bool flag; var json = ComuSaba.SendPing(out flag); Console.WriteLine("Ping : " + json); } //End_ElseIf //試合開始 else if (input == "gamestart") { if (GameMaster.IsAlreadyStartedGame) { Console.WriteLine("すでに試合開始コマンドは受理されてますよ"); continue; } //End_If GameMaster.GameStart(); GameMaster.IsAlreadyStartedGame = true; } //End_ElseIf //ガバ入力 else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Unexpected Input"); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("試合開始 :gamestart"); Console.WriteLine("試合事前情報取得 : gameinfo or game or g"); Console.WriteLine("試合状態取得 : fieldinfo or field or f"); Console.WriteLine("行動情報送信 : sendaction or send or s"); Console.WriteLine("接続確認 : ping or p"); } //End_IfElse //整形 Console.WriteLine(); } //End_Whille } //End_Method