Exemple #1
0
 static void AddWords()
 {
     for (int i = 0; i < dictionary.Length; i++)
     {
         TrueWords.Add(dictionary[i]);
     }
 }
Exemple #2
0
        public static char[,] CreateTable()
        {
            Words.Clear();
            int tableHeight = MenuOptionsData.TableHeight;
            int tableWidth  = MenuOptionsData.TableWidth;

            char[,] table = new char[tableHeight, tableWidth];
            Random random = new Random();

            AddWords();
            while (CheckAr(table, tableHeight, tableWidth))
            {
                if (TrueWords.Count == 0)
                {
                    UsedWords.Clear();
                    Words.Clear();
                    table = CreateTable();
                    break;
                }
                Word word1 = new Word();
                char[,] timeTable = (char[, ])table.Clone();
                string word = TrueWords[random.Next(0, TrueWords.Count)];
                TrueWords.Remove(word);
                int positionX = random.Next(0, tableWidth);
                int positionY = random.Next(0, tableHeight);
                while (!CleanAr(table, positionX, positionY))
                {
                    positionX = random.Next(0, tableWidth);
                    positionY = random.Next(0, tableHeight);
                }
                table[positionY, positionX] = word[0];
                Coords.Push(positionY);
                Coords.Push(positionX);

                for (int i = 1; i < word.Length; i++)
                {
                    if (TruePos(tableWidth, tableHeight, positionX + 1, positionY) && CleanAr(table, positionX + 1, positionY))
                    {
                        positionX++;
                        table[positionY, positionX] = word[i];
                        Coords.Push(positionY);
                        Coords.Push(positionX);
                    }
                    else if (TruePos(tableWidth, tableHeight, positionX, positionY - 1) && CleanAr(table, positionX, positionY - 1))
                    {
                        positionY--;
                        table[positionY, positionX] = word[i];
                        Coords.Push(positionY);
                        Coords.Push(positionX);
                    }
                    else if (TruePos(tableWidth, tableHeight, positionX - 1, positionY) && CleanAr(table, positionX - 1, positionY))
                    {
                        positionX--;
                        table[positionY, positionX] = word[i];
                        Coords.Push(positionY);
                        Coords.Push(positionX);
                    }
                    else if (TruePos(tableWidth, tableHeight, positionX, positionY + 1) && CleanAr(table, positionX, positionY + 1))
                    {
                        positionY++;
                        table[positionY, positionX] = word[i];
                        Coords.Push(positionY);
                        Coords.Push(positionX);
                    }
                    else
                    {
                        table = timeTable;
                        Coords.Clear();
                        break;
                    }
                }
                if (Coords.Count == 0)
                {
                    continue;
                }
                UsedWords.Add(word);
                word1.Name = word;
                bool c = true;
                for (int i = word.Length - 1; i >= 0; i--)
                {
                    positionX = Coords.Pop();
                    positionY = Coords.Pop();
                    word1.CoordsX.Add(positionX);
                    word1.CoordsY.Add(positionY);
                    if (CheckFullElem(table, positionX, positionY, tableWidth, tableHeight) || CheckVariants(table, tableWidth, tableHeight, positionX, positionY))
                    {
                        continue;
                    }
                    else
                    {
                        table = timeTable;
                        Coords.Clear();
                        UsedWords.Remove(word);
                        c = false;
                        break;
                    }
                }
                if (c)
                {
                    word1.CoordsX.Reverse();
                    word1.CoordsY.Reverse();
                    Words.Add(word1);
                }
            }
            return(table);
        }