Игра 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д