public GridControl CheckLineGrid(int num, GridControl gridItem, int direction) { // 检测同一行的 作为跳板后是否还有空格子 GridControl tmpGrid = gridItem.neighbors[direction]; while (num > 0) { num--; if (tmpGrid == null) { break; } tmpGrid = tmpGrid.neighbors[direction]; } if (tmpGrid == null) { return(tmpGrid); } // 若检测到的格子有棋子 则作废 if (tmpGrid.CheckChess()) { tmpGrid = null; } return(tmpGrid); }
public bool MovingChess(GridControl grid) { // 移动棋子 activeGrid.CancelTouch(saveGrid); ChessControl chessItem = activeGrid.ContentChess; chessItem.transform.position = grid.transform.position; activeGrid.ContentChess = null; grid.ContentChess = chessItem; // 寻找途中有无棋子 有且不同队可以扣血 Direction direction = saveGrid[grid]; GridControl gridTmp = activeGrid.neighbors[(int)direction]; bool jumped = false; while (gridTmp != grid) { jumped = true; if (gridTmp.CheckChess()) { if (!gridTmp.ContentChess.CompareTeam(chessItem.GetTeam())) { gridTmp.ContentChess.ReduceHP(); } } gridTmp = gridTmp.neighbors[(int)direction]; } if (jumped) { saveGrid = grid.RepeatedJump(activeGrid); } activeGrid = grid; return(jumped); }
Dictionary <GridControl, Direction> ShowNeigbhorColor(SearchWay way, GridControl jumpedGrid = null) { // 存储找到的方格 Dictionary <GridControl, Direction> saveGrid = new Dictionary <GridControl, Direction>(); // 先搜索是否空格 是 存储 并开始计数 for (int i = 0; i < 6; i++) { GridControl neighborGird = neighbors[i]; if (neighborGird) { // 检测这个方向上格子是否存在棋子 if (!neighborGird.CheckChess()) { // 若为空格 存储 并且搜索方式为全搜索 if (way == SearchWay.SearchAll) { saveGrid.Add(neighborGird, (Direction)i); //neighborGird.ChangeColor(mark); } // 开始寻找这个方向上是否有跳板 Direction direction = (Direction)i; int gridSpaceNum = 1; // 记录到有棋子的格子数 // 检测出存在棋子的格子 var tmpNeighbor = neighborGird.neighbors[i]; while (tmpNeighbor) { if (!tmpNeighbor.CheckChess()) { gridSpaceNum++; } else { break; } tmpNeighbor = tmpNeighbor.neighbors[i]; } // 若存在 if (tmpNeighbor) { var chooseGrid = CheckLineGrid(gridSpaceNum, tmpNeighbor, i); if (chooseGrid) { if (way == SearchWay.SearchJump & jumpedGrid != null) { if (jumpedGrid != chooseGrid) { saveGrid.Add(chooseGrid, (Direction)i); } } else { saveGrid.Add(chooseGrid, (Direction)i); } } } } else { // 若格子上有棋子 var outGrid = neighborGird.neighbors[i]; if (outGrid) { if (!outGrid.CheckChess()) { if (way == SearchWay.SearchJump & jumpedGrid != null) { if (jumpedGrid != outGrid) { saveGrid.Add(outGrid, (Direction)i); } } else { saveGrid.Add(outGrid, (Direction)i); } } } } } } return(saveGrid); }