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
Заставьте это работать, а затем посмотрите на "коллизии", которые помешают вам вставить слово.
Когда у вас все остальное работает, случайным образом заполните все неназначенные места матрицы символами.