private int CalculateCurrentQi(GoPoint dian) { if (dian == null) { return(0); } dian.SetStatusAsVisited(); visitedList_.Add(dian); int qi = 0; qi += CalculateNextQi(dian, dian.UP); qi += CalculateNextQi(dian, dian.DOWN); qi += CalculateNextQi(dian, dian.LEFT); qi += CalculateNextQi(dian, dian.RIGHT); return(qi); }
private int CalculateNextQi(GoPoint dian, GoPoint newDian) { int qi = 0; if (newDian == null || newDian.IsVisited()) { return(0); } else if (newDian.Type == GoPointType.EMPTY) { newDian.SetStatusAsVisited(); visitedList_.Add(newDian); qi += 1; } else if (newDian.Type == dian.Type) { qi += CalculateCurrentQi(newDian); } return(qi); }