private List <ChessPosLogic> FindPath(ChessPosLogic mData, ChessPosLogic tarData) { string tarPos = tarData.GlobalPos; string mPos = mData.GlobalPos; List <ChessPosLogic> path = new List <ChessPosLogic>(); if (mData.CsType == ChessBoardPosType.RailWay && tarData.CsType == ChessBoardPosType.RailWay) { if (GetChessType() == ChessType.GongBing) { path = AStar.AStarEx(mData, tarData); } else { int[] myIPos = GetGlobalTB(mPos); int[] tarIPos = GetGlobalTB(tarPos); if (IsNeedTurn(mData, tarData))//需要转弯 { FindPathRecWithTurn(mData, tarData, path); } else if (myIPos[0] != tarIPos[0] && myIPos[1] != tarIPos[1])//不能到达 { } else //一般寻路 { FindPathRec(mData, tarData, path); } } } else { foreach (var item in mData.GetNodes) { if (item == tarData) { if (tarData.CsType == ChessBoardPosType.XY && tarData.IsOccupied) { return(path); } path.Add(item); } } } return(path); }