public ActionResult Index(HangmanViewModel model) { if (HttpContext.Session["HangmanData"] != null) { Word word = this.hangamnProvider.GetRandomWord(w => ((model.SelectedLanguageID == 0) || w.LanguageID == model.SelectedLanguageID) && ((model.SelectedLevelID == 0) || w.LevelID == model.SelectedLevelID) && ((model.SelectedCategoryID == 0) || w.CategoryID == model.SelectedCategoryID)); HangmanViewModel hangmanModel = (HangmanViewModel)HttpContext.Session["HangmanData"]; model.Languages = hangmanModel.Languages; model.Levels = hangmanModel.Levels; model.Categories = hangmanModel.Categories; if (word != null) { model.HangmanResultID = hangmanModel.HangmanResultID; model = this.LoadWordDetailsIntoModel(model, word); HangmanResult result = new HangmanResult(); result.ResultID = hangmanModel.HangmanResultID; result.WordID = word.WordID; result.WrongAssumption = 0; result.IsWinner = false; this.hangamnProvider.SaveResult(result); HttpContext.Session["HangmanData"] = model; } } // If session is destroyed, redirect to index page. return(this.View(model)); }
public HangmanResult Guess(string letter) { HangmanResult result = new HangmanResult(); if (GameState == GameState.Lost || GameState == GameState.Won) { return(result); } result = IsAValidLetter(letter, result); result = IsAValidLength(letter, result); if (IncorrectGuesses.FirstOrDefault(x => x.Equals(letter.ToUpper())) != null) { _incorrectAllowedGuesses--; return(new DuplicateHangmanGuessResult()); } result = IsACorrectGuess(letter, result); IsGameLost(); _correctGuesses++; IsGameWon(); return(result); }
private HangmanResult IsAValidLetter(string letter, HangmanResult result) { if (!Regex.IsMatch(letter, "[A-Za-z]")) { _incorrectAllowedGuesses--; result = new IncorrectHangmanResult(); } return(result); }
private HangmanResult IsAValidLength(string letter, HangmanResult result) { if (letter.Length > 1) { _incorrectAllowedGuesses--; result = new IncorrectHangmanResult(); } return(result); }
private HangmanResult IsACorrectGuess(string letter, HangmanResult result) { if (!_secretWord.Contains(letter.ToUpper())) { _incorrectAllowedGuesses--; IncorrectGuesses.Add(letter.ToUpper()); result = new IncorrectHangmanResult(); } return(result); }
public ActionResult Index() { string email = string.Empty; if (User.Identity.IsAuthenticated) { MembershipUser user = Membership.GetUser(); email = user.Email; } else if (HttpContext.Session["Email"] != null) { email = HttpContext.Session["Email"].ToString(); } else { return(this.RedirectToAction("Index", "Home", new { auth = false })); } HangmanViewModel hangmanModel = new HangmanViewModel(); Word word = this.hangamnProvider.GetRandomWord(); if (word == null) { return(this.RedirectToAction("Index", "Home")); } hangmanModel = this.GetAllFilters(hangmanModel); hangmanModel = this.LoadWordDetailsIntoModel(hangmanModel, word); HangmanResult result = new HangmanResult(); result.WordID = word.WordID; result.Email = email; result.WrongAssumption = 0; result.IsWinner = false; int resultID = this.hangamnProvider.SaveResult(result); if (resultID > 0) { hangmanModel.HangmanResultID = resultID; HttpContext.Session["HangmanData"] = hangmanModel; return(this.View(hangmanModel)); } return(this.RedirectToAction("Index")); }
public ActionResult CheckLetter(string letters, string word) { // If session is destroyed, redirect to index page. if (HttpContext.Session["HangmanData"] == null) { return(this.RedirectToAction("Index")); } HangmanViewModel hangmanModel = (HangmanViewModel)HttpContext.Session["HangmanData"]; HttpContext.Session["HangmanData"] = null; // Check whether is entered the full word if (word != null) { char[] spellingEteredWord = word.ToLower().ToCharArray(); hangmanModel = this.CheckEnteredWord(hangmanModel, spellingEteredWord); if (hangmanModel == null) { return(this.RedirectToAction("Index")); } } else { hangmanModel = this.CheckWordContainsLetter(hangmanModel, letters[0]); } // Check for end of the game. if (hangmanModel.WordDetails.MissedLettersCount == 0 || hangmanModel.WordDetails.WrongLettersCount >= 5) { hangmanModel.WordDetails.SpellingWords = hangmanModel.WordDetails.WordName; HangmanResult result = new HangmanResult(); result.ResultID = hangmanModel.HangmanResultID; result.WrongAssumption = hangmanModel.WordDetails.WrongLettersCount; result.IsWinner = hangmanModel.WordDetails.MissedLettersCount == 0 ? true : false; this.hangamnProvider.SaveResult(result); } else { HttpContext.Session["HangmanData"] = hangmanModel; } return(this.PartialView("Partial/Hangman", hangmanModel.WordDetails)); }
public int SaveResult(HangmanResult result) { try { using (HangmanContext context = new HangmanContext()) { if (result.ResultID == 0) { result.PlayDate = DateTime.Now; context.HangmanResults.Add(result); context.SaveChanges(); } else { HangmanResult updateResult = context.HangmanResults.FirstOrDefault(r => r.ResultID == result.ResultID); updateResult.PlayDate = DateTime.Now; updateResult.WrongAssumption = result.WrongAssumption; updateResult.IsWinner = result.IsWinner; if (result.WordID != 0) { updateResult.WordID = result.WordID; } context.SaveChanges(); } } return(result.ResultID); } catch (Exception ex) { string path = HttpContext.Current.Server.MapPath("~/Logs"); if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } System.IO.File.AppendAllText(System.IO.Path.Combine(path, "Hangman.txt"), "Error: " + DateTime.Now.ToString() + " " + ex.ToString() + Environment.NewLine); return(0); } }