//------------- //следующий шаг private void NextStep(ref int x, ref int y, int size) { Point p; LabirinthUtils.Direction move = LabirinthUtils.Direction.None; bool ok = false; int step = 0; do { step++; if (step == 5) { step = 1; } move = (LabirinthUtils.Direction)step; p = NextCell(x, y, move);//соседняя точка //если была стенка if (map[x, y] == 1) { ok = (mapMoves[x, y].Grenades - mapMoves[p.X, p.Y].Grenades == 1);//сравниваем количество гранат } //если не было стенки else { ok = (mapMoves[x, y].Value - mapMoves[p.X, p.Y].Value == 1) &&//сравниваем количество волн (mapMoves[x, y].Grenades == mapMoves[p.X, p.Y].Grenades); //и гранат } if (ok) { x = p.X; y = p.Y; } } while (!ok); }
//------------- //результат шага private Point NextCell(int x, int y, LabirinthUtils.Direction step) { return(new Point(x + LabirinthUtils.moveTo[step].X, y + LabirinthUtils.moveTo[step].Y)); }