/// <summary> /// 回合制 轮流走棋 ,itween 运动完成后调用 /// </summary> public void TBS() { if (whoWalk == 着法状态.到红方走) { whoWalk = 着法状态.到黑方走; } else//到黑方走 { whoWalk = 着法状态.到红方走; } UpdateChessGame(); ResetChessReciprocalStateEvent(); Chess_Boss.DetectBeAttacked(CalculateUtil.chess2Vector, CalculateUtil.vector2Chess); }
/// <summary> /// 悔棋点击事件 /// </summary> public void Undo_Click() { if (maps.Count >= 3) { Dictionary <GameObject, Vector2> temp = maps[maps.Count - 1 - 2]; foreach (KeyValuePair <GameObject, Vector2> kvp in temp) { CalculateUtil.ResetChessByMaps(kvp.Key, kvp.Value); } maps.RemoveRange(maps.Count - 2, 2); CalculateUtil.UpdateChessData(); ResetChessReciprocalStateEvent(); Chess_Boss.DetectBeAttacked(CalculateUtil.chess2Vector, CalculateUtil.vector2Chess); } else { //GameObject.Find("UndoButton").GetComponent<Button>().enabled = false; } }
/// <summary> /// 通过AI来移动 /// </summary> /// <param name="chess2Vector"></param> /// <param name="vector2Chess"></param> /// <param name="target">移动的目标位置</param> /// <param name="realMove">是真的移动还是假设移动?</param> public void Move(Dictionary <GameObject, Vector2> chess2Vector, Dictionary <Vector2, GameObject> vector2Chess, Vector2 target, bool realMove) { Vector2[] canMovePoints = CanMovePoints(chess2Vector, vector2Chess).ToArray(); //真正的移动 if (realMove) { } else//假设移动 { for (int i = 0; i < canMovePoints.Length; i++) { if (target == canMovePoints[i]) { //假设移动完后,获取移动后的棋局状况 然后再检测有没有将军 ArrayList moveAssumptionData = CalculateUtil.MoveAssumption(gameObject, target); //这里假设后的检测将军需要检测是否是我方受将军,是则不允许这么走 //.......TODO Chess_Boss.DetectBeAttacked((Dictionary <GameObject, Vector2>)moveAssumptionData[0], (Dictionary <Vector2, GameObject>)moveAssumptionData[1]); } } } }