/// <summary> /// エージェントを動かしたときに、状態がどう変化するか計算します。 /// </summary> /// <param name="team">どのチームが動くか指定します。</param> /// <param name="agentNumber">どのエージェントが動くか指定します。</param> /// <param name="action">どうエージェントが動くか指定します。</param> /// <returns>エージェントを動かしたときの計算データが返ってきます。</returns> public Calc Simulate(Team team, AgentNumber agentNumber, AgentActivityData action) { var c = new Calc(this); c.MoveAgent(team, agentNumber, new AgentActivityData(action)); return(c); }
/// <summary> /// 指定したところにエージェントが移動します。 /// </summary> /// <param name="team">移動させるチーム</param> /// <param name="agent">移動させるエージェント</param> /// <param name="agentActivityData"></param> public void MoveAgent(Team team, AgentNumber agent, AgentActivityData agentActivityData) { var agentActivityDatas = new AgentsActivityData(AgentStatusCode.RequestNotToDoAnything); agentActivityDatas[team, agent] = agentActivityData; MoveAgent(agentActivityDatas); }
/// <summary> /// Procon29_Showの初期化を行います。 /// </summary> /// <param name="procon29_Calc">表示する計算機</param> /// <param name="pictureBox">表示するピクチャボックス</param> public Show(Calc procon29_Calc, PictureBox pictureBox) { Calc = procon29_Calc; PictureBox = pictureBox; // ResourceManagerを取得する System.Resources.ResourceManager resource = Properties.Resources.ResourceManager; //画像ファイルを読み込んで、Imageオブジェクトとして取得する AgentBitmap = new Bitmap[2]; AgentBitmap[0] = (Bitmap)resource.GetObject("Orange"); AgentBitmap[1] = (Bitmap)resource.GetObject("Lime"); FairyBitmap = new Bitmap[4]; FairyBitmap[0] = (Bitmap)resource.GetObject("Strawberry"); FairyBitmap[1] = (Bitmap)resource.GetObject("Apple"); FairyBitmap[2] = (Bitmap)resource.GetObject("Kiwi"); FairyBitmap[3] = (Bitmap)resource.GetObject("Muscat"); foreach (Team team in Enum.GetValues(typeof(Team))) { foreach (AgentNumber agent in Enum.GetValues(typeof(AgentNumber))) { AgentsActivityData[team, agent] = new AgentActivityData(AgentStatusCode.RequestMovement, Calc.Agents[team, agent].Position); } } ClickField = new ClickField(Calc, PictureBox); DrawField = new DrawField(Calc, new Bitmap(pictureBox.Width, pictureBox.Height)); }
/// <summary> /// リクエストが成功したとして処理します /// </summary> /// <param name="agentActivityData">対象となるエージェントの行動データ</param> public static void ToSuccess(this AgentActivityData agentActivityData) { if (agentActivityData.AgentStatusData != AgentStatusCode.NotDoneAnything && agentActivityData.AgentStatusData.ToAttribute() == AgentStatusCodeAttribute.Request) { agentActivityData.AgentStatusData = agentActivityData.AgentStatusData.ToSucceeded(); } }
public static void ToFailByCollisionWithTheLazyOpponent(this AgentActivityData agentActivityData) { switch (agentActivityData.AgentStatusData) { case AgentStatusCode.RequestMovement: agentActivityData.AgentStatusData = AgentStatusCode.FailedInMovingByCollisionWithTheLazyOpponent; return; case AgentStatusCode.RequestRemovementOpponentTile: agentActivityData.AgentStatusData = AgentStatusCode.FailedInRemovingOpponentTileWithTheLazyOpponent; return; default: return; } }
/// <summary> /// 初期化を行います /// </summary> public AgentActivityData(AgentActivityData agentActivityData) { AgentStatusData = agentActivityData.AgentStatusData; Destination = new Coordinate(agentActivityData.Destination); }