Игра пятнашки на C#: как обеспечить перемешивание кнопок
Формулировка задачи:
Добрый день, уважаемые господа.
Наткнулся я на один интересный код, авторство которого увы не известно, однако дабы была справедливость, приведу здесь на него ссылку http://vstdp.ru/Joomla/index.php/15.
Так вот, заинтересовала меня функция запуска новой игры:
В данном случае, все кнопки располагаются в порядке возрастания.
А как может выглядеть функция перемешивания кнопок?
Спасибо.
private void Start_Click(object sender, EventArgs e) { int i = 0; for (int y = 0; y < 4; y++) for (int x = 0; x < 4; x++) { Butons[i].Location = new Point(12 + x * 56, 41 + y * 56); Butons[i++].Pozition = new Point(x, y); }
Решение задачи: «Игра пятнашки на C#: как обеспечить перемешивание кнопок»
textual
Листинг программы
unsafe int[,] GenerateBoard() { var board = new int[4, 4]; int length = board.Length; int blank = 0; var r = new Random(); fixed (int* arr = board) { // Генерация выигрышной комбинации упорядоченных тайлов от 1 до 15 с пустой клеткой в нижнем правом углу. for (int i = 0; i < length - 1; i++) arr[i] = i + 1; // Перемешивание поля for (int i = length - 1; i > 0; i--) { int j = r.Next(i); Swap(ref arr[i], ref arr[j]); if (arr[i] == 0) blank = i; } // Проверка на наличие решения if (blank % 2 == length % 2) { int a = (blank + 1) % length; int b = (blank + 2) % length; Swap(ref arr[a], ref arr[b]); } } return board; } void Swap<T>(ref T a, ref T b) { T c = a; a = b; b = c; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д