public string CreateTableRowForWord(PuzzleWord puzzleClue, int startingIndex) { StringBuilder builder = new StringBuilder(); builder.AppendLine("<tr>"); builder.AppendLine("\t<td>"); string puzzleClueCustomizedClue = puzzleClue.CustomizedClue; if (String.IsNullOrWhiteSpace(puzzleClueCustomizedClue)) { puzzleClueCustomizedClue = $"Clue for {(string) puzzleClue}"; } builder.AppendLine($"\t{puzzleClueCustomizedClue}:"); builder.AppendLine("\t</td>"); builder.AppendLine(); builder.AppendLine("\t<td>"); builder.Append("\t"); foreach (var unused in puzzleClue.Letters) { builder.AppendLine($@"<input type=""text"" size=""1"" maxlength=""1"" id=""letter{startingIndex}"" onFocus=""colorMeAndMyMatch({startingIndex},'yellow');"" onBlur=""colorMeAndMyMatch({startingIndex},'white');"""); startingIndex++; builder.Append("\t/>"); } builder.AppendLine(); builder.AppendLine("\t</td>"); builder.AppendLine("</tr>"); return(builder.ToString()); }
Result <PuzzleSolution> FindWord(PuzzleWord word, IList <PuzzleMatrix> matrix) { var characters = word.Word.ToCharArray(); var character = characters.FirstOrDefault(); foreach (var cell in matrix) { if (cell.Character == character) { var solutionMatrix = new List <PuzzleMatrix>(); solutionMatrix.Add(cell); var solutionTrace = TraceWord(characters.Skip(1).ToArray(), cell, matrix, solutionMatrix); if (solutionTrace.Count == characters.Length) { return(Result.Ok(new PuzzleSolution() { Word = word.Word, Breakdown = solutionTrace })); } } } return(Result.Fail <PuzzleSolution>("Word Not Found", ErrorType.EntityNotFound)); }
public Puzzle AddWord(int id, [FromBody] PuzzleWord word) { var rc = PuzzleRepository.AddWord(id, word.Word); PuzzleRepository.SaveChanges(); return(rc); }
public void MultipleWords_HaveExpectedLetters() { InnerAnacrosticPuzzle puzzle = new InnerAnacrosticPuzzle(); puzzle.AddWordToClues("as"); puzzle.AddWordToClues("is"); PuzzleWord firstWord = puzzle.Clues[0]; PuzzleLetter firstLetter = firstWord.Letters[0]; Assert.AreEqual('a', firstLetter.ActualLetter); Assert.AreEqual(1, firstLetter.NumericIndex); Assert.AreEqual('A', firstLetter.AlphabeticIndex); PuzzleLetter secondLetter = firstWord.Letters[1]; Assert.AreEqual('s', secondLetter.ActualLetter); Assert.AreEqual(2, secondLetter.NumericIndex); Assert.AreEqual('A', secondLetter.AlphabeticIndex); PuzzleWord secondWord = puzzle.Clues[1]; PuzzleLetter firstLetterInSecondWord = secondWord.Letters[0]; Assert.AreEqual('i', firstLetterInSecondWord.ActualLetter); Assert.AreEqual(3, firstLetterInSecondWord.NumericIndex); Assert.AreEqual('B', firstLetterInSecondWord.AlphabeticIndex); PuzzleLetter secondLetterInSecondWord = secondWord.Letters[1]; Assert.AreEqual('s', secondLetterInSecondWord.ActualLetter); Assert.AreEqual(4, secondLetterInSecondWord.NumericIndex); Assert.AreEqual('B', secondLetterInSecondWord.AlphabeticIndex); }
public EditWindow(PuzzleWord theWord, int maxCol, int maxRow) { InitializeComponent(); Word = theWord.Copy(); WindowSetup(); udColumn.Maximum = maxCol - 1; udRow.Maximum = maxRow - 1; cboDirections.ItemsSource = Enum.GetValues(typeof(Direction)); }
private void Save() { if (tbxWord.Text.Length > 0) { int number = 1; int.TryParse(tbxNumber.Text, out number); Word = new PuzzleWord(tbxWord.Text, number, tbxClue.Text, cboDirections.SelectedValue.ToString(), (int)udColumn.Value, (int)udRow.Value); this.DialogResult = true; this.Close(); } }
public PuzzleWord Generate(params object[] options) { var rc = new PuzzleWord { Id = -1, Word = "word" }; Puzzle.PuzzleWords.Add(rc); return(rc); }
public PuzzleWord Generate(params object[] options) { var idx = WordRepository.WordCount.Random(); var rc = new PuzzleWord { Id = -1, Word = WordRepository.Get(idx) }; Puzzle.PuzzleWords.Add(rc); return(rc); }
void NewPuzzle() { wordGrid.BuildGrid(); panelGrid.BuildGrid(); SelectWords(); // Place horizontal words and select tiles for vertical word. Assert.AreEqual(topIntercept, bottomIntercept); // currently constrained to be at some intercepts int diff = topIntercept - bottomIntercept; List <LibrettoTile> tiles; if (diff >= 0) { PlaceWord(topWord, topWordRow, 0); PlaceWord(bottomWord, bottomWordRow, diff); tiles = wordGrid.GetColumnTiles(topIntercept, mysteryWord.Length); } else { PlaceWord(topWord, topWordRow, -diff); PlaceWord(bottomWord, bottomWordRow, 0); tiles = wordGrid.GetColumnTiles(bottomIntercept, mysteryWord.Length); } // Show gap tiles and build up letters for panel. puzzleWord = new PuzzleWord(mysteryWord, tiles); buttonChars = new List <char>(); for (int i = 0; i < mysteryWord.Length; i++) { LibrettoTile tile = tiles[i]; if (tile.tileType == LibrettoTile.TILE_TYPE.EMPTY) { tile.ShowGap(); buttonChars.Add(mysteryWord[i]); } } // Set up distractors. distractorChars = new List <char>(); for (int i = 0; i < NUM_DISTRACTERS; i++) { char distractor = LibrettoTileBag.GetLetter(); distractorChars.Add(distractor); buttonChars.Add(distractor); } Debug.Log("distractorChars: " + new string(distractorChars.ToArray())); buttonChars = Utils.Scramble <char>(buttonChars); Debug.Log("buttonChars: " + new string(buttonChars.ToArray())); panelGrid.ShowRowChars(buttonChars); }
public void SingleWord_HasExpectedLetters() { PuzzleWord word = new PuzzleWord("as", 1, 'A'); PuzzleLetter firstLetter = word.Letters[0]; Assert.AreEqual("A1", firstLetter.ToString(), "Unexpected result from ToString override."); Assert.AreEqual('a', firstLetter.ActualLetter); Assert.AreEqual(1, firstLetter.NumericIndex); Assert.AreEqual('A', firstLetter.AlphabeticIndex); PuzzleLetter secondLetter = word.Letters[1]; Assert.AreEqual('s', secondLetter.ActualLetter); Assert.AreEqual(2, secondLetter.NumericIndex); Assert.AreEqual('A', secondLetter.AlphabeticIndex); }
void SelectMysteryWord() { var len = difficultyIndex >= wordLen.Length ? wordLen[wordLen.Length - 1] : wordLen [difficultyIndex]; string word = CrossingDictionary.Instance.RandomUniqueWord(len); Debug.Log("MYSTERY: " + word); // Place "mystery word" (really not a mystery). mysteryWord = new PuzzleWord(word, wordGrid.GetRowTiles(word.Length, ROW_OF_MYSTERY_WORD)); var chars = mysteryWord.word.ToCharArray(); for (var n = 0; n < mysteryWord.wordTiles.Count; n++) { mysteryWord.wordTiles [n].SetTileData(chars [n]); mysteryWord.wordTiles [n].ShowFixed(); mysteryWord.wordTiles [n].SetColor(Color.white, Color.black); } }
void SelectCrossWords() { var shuffledTiles = new List <CrossingTile> (); shuffledTiles.AddRange(mysteryWord.wordTiles); shuffledTiles = Utils.Scramble <CrossingTile> (shuffledTiles); var num = shuffledTiles.Count - 2; puzzle.Clear(); var i = 0; while (puzzle.Count < num) { var tile = shuffledTiles [i]; var tileChar = tile.TypeChar; var tiles = wordGrid.GetColumnTiles(3, tile.column); var pattern = GetVerticalCrossPattern(tiles); var words = CrossingDictionary.Instance.MatchesAPattern(pattern); if (words != null && words.Count != 0) { var word = words [Random.Range(0, words.Count)]; var puzzleWord = new PuzzleWord(word, tiles); puzzle.Add(puzzleWord); } i++; if (i == shuffledTiles.Count) { i = 0; } } var buttonChars = new List <char> (); foreach (var p in puzzle) { var chars = p.word.ToCharArray(); var hints = Random.Range(0, 2); Debug.Log("CROSS: " + p.word); for (var n = 0; n < p.wordTiles.Count; n++) { if (!p.wordTiles [n].gameObject.activeSelf) { if (hints > 0 && Random.Range(0, 10) > 4) { p.wordTiles [n].SetTileData(chars [n]); p.wordTiles [n].ShowFixed(); hints--; } else { buttonChars.Add(chars [n]); p.wordTiles [n].ShowGap(); } } } } buttonChars = Utils.Scramble <char> (buttonChars); panelGrid.ShowRowChars(buttonChars); }
public async Task <IHttpActionResult> Update(PuzzleWord word) { return(Ok(await Puzzle.PuzzleWords.UpdateAsync(word, c => c.Id == word.Id))); }
public async Task <IHttpActionResult> Add(PuzzleWord word) { return(Ok(await Puzzle.PuzzleWords.AddAsync(word))); }