Игра 2048,рандом - C#

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

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

Была поставлена задача,создать метод генерации случайного числа (2 или 4) в случайной свободной клетке массива 4 на 4,свободная клетка это "0" Сделал массив,генератор случайного числа 2 или 4 тоже сделал,но как сделать чтобы это число генерировалось именно в случайной свободной клетке,а не в определенной как у меня. Понимание как сделать есть,но не хватает опыта и знания синтаксиса Помогите пожалуйста Вот мой код:
       static void Main(string[] args)
        {
            int[,] m = new int[,] { { 0, 2, 0, 0 }, { 0, 0, 0, 0 }, { 4, 4, 16, 16 }, { 2, 64, 32, 64 } };
            Show(m);
            for (int x = 0; x < m.GetLength(1); x++)
                random(m);
            Show(m);
            Console.ReadLine();
        }
        static void Show(int[,] a)
        {
            for (int i = 0; i < a.GetLength(0); i++)
            {
                for (int j = 0; j < a.GetLength(1); j++)
                {
                    Console.Write("{0,5}", a[i, j]);
                }
                Console.WriteLine();
                Console.WriteLine();
            }
        }
        static int[,] random(int[,] a)
        {
            for (int x = 0; x < a.GetLength(1); x++)
                for (int i = a.GetLength(1) - 1; i > 0; i--)
                {
                    Random rand = new Random();
                    int newValue = (rand.Next(2) != 0) ? 2 : 4;
 
                     a[0,0] = newValue;
 
                }
            return a;
        }
    }
 
}

Решение задачи: «Игра 2048,рандом»

textual
Листинг программы
Random rnd=new Random();
int rndRow, rndCol;
var zeros=m.Cast<int>()
        .Select((x, i) => new {x,i})
        .Where(arr=>arr.x==0)
        .Select(arr=>arr.i)
                .ToArray();
var rndZero=zeros[rnd.Next(0,zeros.Length)];
rndRow=rndZero/m.GetLength(1);
rndCol=rndZero%m.GetLength(0);
Console.WriteLine("{0}, {1}",rndCol,rndRow);

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


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

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

11   голосов , оценка 3.727 из 5