Генерация 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;
}
}