示例#1
0
        //-------------

        //следующий шаг
        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);
        }
示例#2
0
        //-------------

        //результат шага
        private Point NextCell(int x, int y, LabirinthUtils.Direction step)
        {
            return(new Point(x + LabirinthUtils.moveTo[step].X, y + LabirinthUtils.moveTo[step].Y));
        }