public void ActivateWord(GuessedWord word) { word.active = true; word.activated = DateTime.Now; db.Add(word); db.SaveChanges(); Active = word; }
public void DeActivateWord() { GuessedWord word = db.GuessedWord.FirstOrDefault(w => w.active); if (word == null) { return; } word.deactivated = DateTime.Now; db.Update(word); word.active = false; db.SaveChanges(); Active = null; }
public void ProcessChar(char c) { bool foundChar = false; StringBuilder sb = new StringBuilder(); sb.Append(GuessedWord[0]); for (int i = 1; i < GuessedWord.Length - 1; i++) { if (GuessedWord[i] == '_') { if (Word.ToUpper()[i] == c) { sb.Append(Word[i]); foundChar = true; } else { sb.Append("_"); } } else { sb.Append(GuessedWord[i]); } } sb.Append(GuessedWord[GuessedWord.Length - 1]); GuessedWord = sb.ToString(); if (!foundChar) { WrongChars += " " + c; WrongCharsCount++; } sb.Clear(); sb.Append(GuessedWord[0]); for (int i = 1; i < GuessedWord.Length; i++) { sb.Append(" " + GuessedWord[i]); } DisplayWord = sb.ToString(); Status = GuessedWord.IndexOf("_") == -1 ? "Success" : (WrongCharsCount > 5 ? "Failed" : ""); if (Status != "") { repository.RecordGame(playerID, wordID, WrongCharsCount, 0, Status == "Success"); } }
public bool GamesWon() { // pokud je celé slovo uhodlé if (CurrentGame.GameProgress == CurrentGame.WordChars.Count()) { // uloží se uhodnuté slovo do databaze GuessedWord guessedWord = new GuessedWord { UserId = GetUserId(), WordId = CurrentGame.Word.Id }; // pricte 1 k GuessedWordCount právě přihlášeného uživatele _db.ApplicationUsers.Where(o => o.Id == GetUserId()).SingleOrDefault().GuessedWordCount++; _db.GuessedWords.Add(guessedWord); _db.SaveChanges(); RestartGame(); return(true); } return(false); }
public void Process(SocketMessage message) { Message = message; Command cmd = new Command(message); User sender = db.Find <User>(message.Author.Id.ToString()); if (sender == null) { sender = new User() { id = message.Author.Id.ToString(), username = message.Author.Username }; db.Add(sender); } GuessedWord active = guesser.ActiveWord(); if (!cmd.isValid) { Discord.Reply(Message.Channel, "Неизвестная комманда, напиши ;;help"); return; } switch (cmd.command) { case "кто": if (active != null) { Discord.Reply(Message.Channel, $"Слово загадал {active.user.username} в {active.activated}"); } else { Discord.Reply(Message.Channel, $"Слово никто не загадал! Будь первым! Напиши ``;;загадать абрикос``"); } break; case "загадать": if (active != null) { TimeSpan timepassed = DateTime.Now - active.activated; if (timepassed.TotalHours < 24) { Discord.Reply(Message.Channel, $"Слово загадал ``{active.user.username}`` в ``{active.activated}``. \n Реши прежде его слово, чтобы получить возможность загадать своё"); return; } nlog.LogInformation("Question expired"); guesser.DeActivateWord(); } string combinedword = string.Join(" ", cmd.arguments); if (combinedword.Length < 3) { Discord.Reply(Message.Channel, $"Давай что-то по длинее придумай :wink:"); return; } if (combinedword.Length > 12) { Discord.Reply(Message.Channel, $"Они же никогда в жизни не угадают, за что ты так с ними? :weary: \n Давай другое"); return; } if (WordValidator(combinedword)) { Discord.Reply(Message.Channel, $"Попробуй загадать слово используя лишь буквы"); return; } GuessedWord word = new GuessedWord() { user = sender, word = combinedword.ToLower() }; guesser.ActivateWord(word); Discord.Reply(Message.Channel, $"Хорошо, пусть попробуют теперь угадать {word.word}"); break; case "очки": Discord.Reply(Message.Channel, $"Твои баллы: {sender.points}"); break; case "забудь": if (active == null) { Discord.Reply(Message.Channel, $"Так ничего же загадано!"); return; } if (sender.id != active.user.id) { Discord.Reply(Message.Channel, $"Хех, хитрый. Не ты загадывал это слово. Попроси {active.user.username} чтобы он отменил, или дождись 24 часа"); return; } guesser.DeActivateWord(); Discord.Reply(Message.Channel, $"ОК. Готов к новому слову"); break; case "help": break; default: Discord.Reply(Message.Channel, "Неизвестная комманда, напиши ;;help"); break; } }