/// <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; } } }
/// <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); } }