/// <summary>
        /// Двигает 0 по направлению к цели, пока не станет его соседом
        /// </summary>
        /// <param name="map"></param>
        /// <param name="actual"></param>
        public static void MoveToNeighbourhood(this Cell[,] map, Cell actual)
        {
            var zero = map.GetNum(0);

            while (!zero.IsNear(actual))//двигаем 0 к цели пока не будем рядом
            {
                switch (zero.GetDirectionToMove(actual))
                {
                case Cell.Direction.Down:    //если 0 сверху цели
                    map.MoveDown(zero);
                    break;

                case Cell.Direction.Left:    //если 0 справа от цели
                    map.MoveLeft(zero);
                    break;

                case Cell.Direction.Up:    //если 0 снизу цели
                    map.MoveUp(zero);
                    break;

                case Cell.Direction.Right:    //если 0 слева от цели
                    map.MoveRight(zero);
                    break;

                default:
                    break;
                }
            }
        }
Example #2
0
        /// <summary>
        /// Мтод размещения первой колонки
        /// </summary>
        internal void PlaceFirstCol()
        {
            var five     = map.GetNum(5);
            var nine     = map.GetNum(9);
            var thirteen = map.GetNum(13);

            if (five.CheckPlace() && nine.CheckPlace() && thirteen.CheckPlace())
            {
                return;
            }
            var zero = map.GetNum(0);

            PlaceNum(thirteen);
            if (!nine.CheckPlace())
            {
                PlaceNum(nine);
            }
            if (zero.Right == five && zero.Down == nine)
            {
                five.Actual = true;
                map.MoveRight(zero);
                five.CheckPlace();
                five.Actual = false;
            }
            if (!five.CheckPlace())
            {
                five.TargCol = 1;
                five.TargRow = 2;
                PlaceNum(five);
                BlackMagic2(five);
            }
        }