public static List <ChessContainer> getArrivableGrid(Chess c) { List <ChessContainer> res_list = new List <ChessContainer>(); List <ChessContainer> search_list = new List <ChessContainer>(); search_list.Add(c.container); search_list = getAroundGrid(c.attribute.Spd, search_list); foreach (var item in search_list) { if (item.my_chess == null && GameRule.judgePassable(c, item)) { res_list.Add(item); } } return(res_list); }
void DistDFS_Explored(int now_pos, int nowdis) { foreach (var item in Main.Inst.dGetChessContainer) { ChessContainer cc = item(Main.Inst.chess_grids[now_pos]); if (cc == null) { continue; } if (chess_grids_dist[cc.number] == -1) { continue; } if (nowdis < chess_grids_dist[cc.number] || chess_grids_dist[cc.number] == 0) { if (GameRule.judgePassable(Main.Inst.moving_chess, cc)) { chess_grids_dist[cc.number] = nowdis; if (nowdis > max_grid_dis) { max_grid_dis = nowdis; } } else { chess_grids_dist[cc.number] = -1; } if (chess_grids_dist[cc.number] != -1) { DistDFS_Explored(cc.number, chess_grids_dist[cc.number] + 1); } } } return; }