Cuzuc Vlad-Andrei Ответов: 1

Как создать функцию C# для помещения случайных слов в матрицу char?


Всем привет! Мне нужна помощь для школьного проекта.У меня есть матрица N x N , строка[] слов и строка[]направлений. Мне нужна помощь в создании функции для генерации в Матрице слов в случайных направлениях.

Что я уже пробовал:

Random rn = new Random();
            int count = 0;
           
            for (int k = 0; k < nou1.n; k++)
            {
                bool ok = false;
                int dir = rn.Next(0, nou1.nrdir-1);

}

Graeme_Grant

Ты имеешь в виду что-то вроде этого?

Полная игра словесная головоломка в C#.NET[^]

1 Ответов

Рейтинг:
0

OriginalGriff

Предполагая, что вы создаете "поиск слов" или что-то подобное, это не так просто, как вы могли бы подумать.

Начните с написания метода вставки одного слова:

private Random rand = new Random();
private bool InsertWord(string word, char[,] matrix)
   {
   ...
   }
Возвращаемое значение равно true, если слово было вставлено успешно, и false, если оно не было вставлено. Слово не может быть вставлено, если оно слишком велико для матрицы, например.
Начните с проверки, подходит ли слово вообще: это легко - если длина слова меньше, чем верхний предел или любое другое измерение, оно каким-то образом подходит!

Теперь используйте случайный экземпляр (который должен быть частным, чтобы он не был локальным для метода), чтобы сгенерировать направление и пару (X, Y), через которую должно пройти слово.
Используйте направление, чтобы изменить значение (X, Y) так, чтобы все слово помещалось в матрицу. Например, если слово if "HELLO", направление "слева направо", а ширина X равна 10, то X нужно настроить так, чтобы оно было меньше или равно 10 - 5, иначе слово будет "перекрывать" правый край матрицы.

Используйте foreach для доступа к каждому символу по очереди из Слова и вставляйте их в (X, Y), изменяя X и Y в соответствии с направлением:
Dir        dX  dY
Up          0  -1
UpRight     1  -1
Right       1   0
DownRight   1   1
Down        0   1
DownLeft   -1   1
Left       -1   0
UpLeft     -1  -1
Заставьте это работать, а затем посмотрите на "коллизии", которые помешают вам вставить слово.

Когда у вас все остальное работает, случайным образом заполните все неназначенные места матрицы символами.