Сформировать массив, представляющий собой поле для игры в «Пятнашки» - C#
Формулировка задачи:
Надо сформировать массив, представляющий собой поле для игры в «Пятнашки». Поле является массивом 4x4, в клетках которого располагаются числа от 1 до 15 в случайном порядке без повторений. Одна клетка игрового поля остается свободной.
Решение задачи: «Сформировать массив, представляющий собой поле для игры в «Пятнашки»»
textual
Листинг программы
static void Main(string[] args) { const int N = 4; int l = N * N; //формируем сначала одномерный массив (0, 1, , ... , 15), 0 - пустая клетка //будем работать пока с этим массивом var array = Enumerable.Range(0, l).ToArray(); var rnd = new Random(); //переставляем элементы массива в случайном порядке for(int i = l - 1; i >= 0; i--) { var j = rnd.Next(i); Swap(ref array[i], ref array[j]); } //пусть наш массив - функция подстановки из индексов в значения //определим четность подстановки int count = 0; for(int i = 0; i < l; i++) { for(int j = 0; j < i; j++) if (array[i] < array[j]) count++; } //если подстановка нечетна - делаем еще одну транспозицию if(count % 2 != 0) { int i = rnd.Next(l - 2); Swap(ref array[i], ref array[i + 1]); } int[,] field = new int[N, N]; //приводим одномерный массив к двумерному полю for(int i = 0; i < l; i++) { field[i / N, i % N] = array[i]; } } static void Swap(ref int a, ref int b) { var t = a; a = b; b = t; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д