Как сделать генератор слов с авто-заполнением
Ребята подскажите как мне написать код или можете пожалуйста предложить свой вариант кода.
В общем, что мне надо сделать. Моя задумка заключается в чём, в том, что мне надо реализовать код действия, чтобы можно было заполнить массив кода (массив с типом string) и данный массив со словами раскидать по рандомным полям, то есть по вертикали, по горизонтали, вверх, вниз, влево, вправо и.т.
пример как показано на картинке. Буду очень признателен, если вы мне поможете !
Ответы (1 шт):
Допустим у вас есть двумерный массив Array типа char размером Columns*Rows, и массив строк wordsAr со словами, которые будут записаны. Код будет выглядеть примерно так: Вот такой код я могу написать:
int[,] dir = int[,] {{0,1}{0,-1}{1,0}{-1,0}{1,1}{1,-1}{-1,1}{-1,-1}}; // Направления строк
for (int i = 0; i < wordsAr.Length; i++) { // Перебираем строки
// Координаты ячейки, в которой начнется слово
int cellX = Random.Range(0, Rows), cellY = Random.Range(0, Columns);
do {
// Выбираем направление
int tmpDir = dir[Random.Range(0, dir.Length)];
while(isCellAcceptale(tmpDir) == false);
// Пишем слово
for (int j = 0; j < wordsAr[i].Length; j++) {
Array[cellX][cellY] = wordsAr[i].charAt(j);
cellX += tmpDir[0];
cellY += tmpDir[1];
}
}
bool isCellAcceptable (int cellX, int cellY, string word, int[] direction) {
int wordLength = word.Length;
if (direction[0] == 1 && Columns - cellX > wordLength-1 ||
direction[0] == -1 && cellX > wordLength ||
direction[1] == 1 && cellY > wordLength ||
direction[1] == -1 && Rows - cellY > wordLength-1)
return false;
else return true;
Код писал без компиляции, так что могут быть ошибки и очепятки. Единственная возможная ошибка - если слово будет длинное и его невзможно будет написать из начальной строчки ни в одном направлении