Exemplo n.º 1
0
 public void ActivateWord(GuessedWord word)
 {
     word.active    = true;
     word.activated = DateTime.Now;
     db.Add(word);
     db.SaveChanges();
     Active = word;
 }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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");
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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;
            }
        }