Сформировать массив, представляющий собой поле для игры в «Пятнашки» - C#

Узнай цену своей работы

Формулировка задачи:

Надо сформировать массив, представляющий собой поле для игры в «Пятнашки». Поле является массивом 4x4, в клетках которого располагаются числа от 1 до 15 в случайном порядке без повторений. Одна клетка игрового поля остается свободной.

Решение задачи: «Сформировать массив, представляющий собой поле для игры в «Пятнашки»»

textual
Листинг программы
  1. static void Main(string[] args)
  2. {
  3.     const int N = 4;
  4.     int l = N * N;
  5.     //формируем сначала одномерный массив (0, 1, , ... , 15), 0 - пустая клетка
  6.     //будем работать пока с этим массивом
  7.     var array = Enumerable.Range(0, l).ToArray();
  8.     var rnd = new Random();
  9.     //переставляем элементы массива в случайном порядке
  10.     for(int i = l - 1; i >= 0; i--)
  11.     {
  12.         var j = rnd.Next(i);
  13.         Swap(ref array[i], ref array[j]);
  14.     }
  15.     //пусть наш массив - функция подстановки из индексов в значения
  16.     //определим четность подстановки
  17.     int count = 0;
  18.     for(int i = 0; i < l; i++)
  19.     {
  20.         for(int j = 0; j < i; j++)
  21.             if (array[i] < array[j])
  22.                 count++;
  23.     }
  24.     //если подстановка нечетна - делаем еще одну транспозицию
  25.     if(count % 2 != 0)
  26.     {
  27.         int i = rnd.Next(l - 2);
  28.         Swap(ref array[i], ref array[i + 1]);
  29.     }
  30.     int[,] field = new int[N, N];
  31.     //приводим одномерный массив к двумерному полю
  32.     for(int i = 0; i < l; i++)
  33.     {
  34.         field[i / N, i % N] = array[i];
  35.     }
  36. }
  37. static void Swap(ref int a, ref int b)
  38. {
  39.     var t = a;
  40.     a = b;
  41.     b = t;
  42. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы