Генерация 2D лабиринта. Как продолжить после первого шага? - C#

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

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

как мне продолжить рандом, когда после первой ставится рандомно и чтобы продолжалось
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rand = new Random();
            int height = 20;
            int Weight = 20;
            int[,] maze = new int[height,Weight];
            for (int i = 0; i < height; i++)
            {
                for (int j = 0; j < Weight; j++)
                {
                    maze[i, j] = 1;
                    Console.Write(maze[i, j] + " ");
                }
                Console.WriteLine();
            } 

            int r = rand.Next(height);
            while (r % 2 == 0)
            {
                r = rand.Next(height);
            }
 
            int c = rand.Next(Weight);
            while (c % 2 == 0)
            {
                c = rand.Next(Weight);
            }
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            maze[r, c] = 0;
            for (int i = 0; i < height; i++)
            {
                for (int j = 0; j < Weight; j++)
                {
                  
                    Console.Write(maze[i, j] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
            int tile = 25;
            int z = 0;
            int dir = 0;

            for (int i = 0; i < 1; i++)
                {
                dir = rand.Next(0, 4);
                if (dir == 0)
                    {
                        maze[r - 1, c] = 0;

                    }
                    if (dir == 1)
                    {
                        maze[r, c - 1] = 0;
                    }
 
                    if (dir == 2)
                    {
                        maze[r + 1, c] = 0;
 
                    }
 
                    if (dir == 3)
                    {
                        maze[r, c + 1] = 0;
 
                        //      break;
                    }

                }
             //   Console.WriteLine(dir);
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            for (int i = 0; i < height; i++)
            {
                for (int j = 0; j < Weight; j++)
                {
 
                    Console.Write(maze[i, j] + " ");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}

Решение задачи: «Генерация 2D лабиринта. Как продолжить после первого шага?»

textual
Листинг программы
private static void GenerateRandomAtOddIndices(int[,] mas)
        {   
            Random rand = new Random();
            var height = mas.GetLength(0);
            var weight = mas.GetLength(1);
 
            for (int i = 0; i < mas.Length/2; i++)
            {
                int r = rand.Next(height);
                while (r % 2 == 0)
                {
                    r = rand.Next(height);
                }
 
                int c = rand.Next(weight);
                while (c % 2 == 0)
                {
                    c = rand.Next(weight);
                }
                mas[r, c] = 0;
            }
        }

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


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

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

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