Сформировать массив, представляющий собой поле для игры в «Пятнашки» - 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;
}

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


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

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

13   голосов , оценка 4.154 из 5
Похожие ответы