public char[,] AddFirstWord() { List <Word> highestWordList = new List <Word>(); foreach (var str in ListOfNames.aWordList) { Word w = new Word(str, ListOfNames); highestWordList.Add(w); } var highestWordListSorted = highestWordList.OrderByDescending(i => i.ScoreOfWord).ToList(); var highestWord = highestWordListSorted[0]; //Word w = new Word(highestWordList[0], ListOfNames); var arrayOfLetters = highestWord.LettersInWordArray; int startX = 1; int startY = 1; for (int i = 0; i < arrayOfLetters.Length; i++) { Grid[startX, startY] = arrayOfLetters[i]; Coordinate c = new Coordinate(startX, startY); int index = i; foreach (var obj in highestWord.LettersInWordPositions) { if (obj.Index == i) { obj.Coords = c; } } highestWord.IsHorizontal = true; startY = startY + 1; } ListOfNames.aWordList.Remove(highestWord.Element); ListOfNamesInGrid.Add(highestWord); ListOfNamesInGridString.Add(highestWord.Element); LastInsertedWord = highestWord; Counter = 1; return(Grid); }
public char[,] MoreWords() { Counter = 0; foreach (var obj in ListOfNamesInGrid) { var lettersInWord = obj.LettersInWordPositions; var name = obj.IntersectingWords.First(); var intersectingWords = name.Value; foreach (var letterInExistingWord in lettersInWord) { var letterInExistingWordIndex = letterInExistingWord.Index; var letterInExistingWordLetter = letterInExistingWord.Letter; var letterInExistingWordCoords = letterInExistingWord.Coords; foreach (var let in intersectingWords) { var k = let.Key; var intersectingWordList = let.Value.OrderByDescending(i => i.Length).ToList(); if (k == letterInExistingWordLetter) { foreach (var nameInList in intersectingWordList) { if (ListOfNamesInGridString.Contains(nameInList)) { continue; } else { Word nme = new Word(nameInList, ListOfNames); nme.IntersectingLetters.Add(k); CheckWord(nme, letterInExistingWord, obj); if (nme.IsValid == true) { AddWordToGrid(nme, letterInExistingWordCoords); if (nme.IsAdded == true) { foreach (var l in nme.IntersectingLetters) { AllIntersectingLettersInGrid.Add(l); } ListOfNamesInGridCopy.Add(nme); ListOfNamesInGridString.Add(nme.Element); LastInsertedWord = nme; ListOfNames.aWordList.Remove(nme.Element); Counter = 1; } } else { continue; } } } } } } } if (ListOfNamesInGridCopy.Count > 0) { foreach (var ele in ListOfNamesInGridCopy) { ListOfNamesInGrid.Add(ele); } ListOfNamesInGridCopy.Clear(); Next = true; } else { Next = false; } return(Grid); }