예제 #1
0
        /**
         * Retourne un nombre aléatoire entre 1 et la taille de la liste des verbes
         **/
        private int GetRandomVerb()
        {
            VerbeService verbeService = new VerbeService(new EnglishBattle.data.EnglishBattleEntities());
            List <Verbe> listVerb     = verbeService.GetVerbList();
            Random       rndNum       = new Random();

            return(rndNum.Next(1, listVerb.Count + 1));
        }
예제 #2
0
        public ActionResult Question(QuestionViewModel model)
        {
            //validation côté serveur
            if (ModelState.IsValid)
            {
                // Récupère les services
                VerbeService verbeService = new VerbeService(new EnglishBattle.data.EnglishBattleEntities());

                // Récupère de la valeur session contenant les informations à l'arrivée d'une question.
                Question fromSession = (Question)Session["questionInfo"];
                Partie   partie      = (Partie)Session["partie"];

                DateTime dateAnswer = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                // Objet Question qui va être insérer dans la base.
                Question question = new Question
                {
                    idPartie              = fromSession.idPartie,
                    idVerbe               = fromSession.idVerbe,
                    dateEnvoie            = fromSession.dateEnvoie,
                    reponseParticipePasse = model.ParticipePasse,
                    reponsePreterit       = model.Preterit,
                    dateReponse           = dateAnswer,
                };

                questionService.InsertQuestion(question);

                // Variable inutile servant pour caculer le delta entre 2 date
                DateTime a = question.dateEnvoie;
                DateTime b = (DateTime)question.dateReponse;

                // Si le delta entre les dates d'envoie et de réponse est supérieur à 60 seconde, soit une minute
                if (b.Subtract(a).TotalSeconds >= 60)
                {
                    partieService.UpdatePartie(partie);

                    // Réinitialise les sessions en les passant à nulle
                    Session["partie"]       = null;
                    Session["listVerb"]     = new List <int>();
                    Session["questionInfo"] = null;

                    TempData["message"] = "You took too much time, more than 1mn !";

                    Session["numQuest"] = 0;

                    // Redirection sur la page final
                    return(RedirectToAction("End", "Question"));
                }
                // Si la question a été correctement répondu
                else if (isCorrectAnswers(question.idVerbe, question.reponsePreterit, question.reponseParticipePasse))
                {
                    TempData["message"] = "Good Answers";

                    // Incrémentation du score et mis à jour du score dans la base
                    partie.score++;
                    partieService.UpdatePartie(partie);

                    // Si le score est un multiple de 5, message de Félicitation
                    if (partie.score % 5 == 0)
                    {
                        TempData["message"] = "Good Answer ! It was the " + partie.score + " in a row !";

                        return(RedirectToAction("Question", "Question"));
                    }
                    // Si le joueur a répondu à tout les verbes, redirection sur la page final
                    else if (partie.score == verbeService.GetVerbList().Count)
                    {
                        TempData["message"] = "Félicitations ! Vous avez réussi à trouver le prétérit et le participe passé de tous les verbes irréguliers !";

                        return(RedirectToAction("End", "Question"));
                    }
                    // Sinon, message de bonne réponse et passage à la question suivante
                    else
                    {
                        TempData["message"] = "Good Answer !";

                        return(RedirectToAction("Question", "Question"));
                    }
                }
                // Sinon, cela signifie que le joueur a mal répondu
                else
                {
                    partieService.UpdatePartie(partie);

                    // Réinitialise les sessions en les passant à nulle
                    Session["partie"]       = null;
                    Session["listVerb"]     = new List <int>();
                    Session["questionInfo"] = null;
                    Session["numQuest"]     = 0;

                    TempData["message"] = "Mauvaise réponse ! Vous avez perdu !";

                    // Redirection sur la page final
                    return(RedirectToAction("End", "Question"));
                }
            }

            return(View());
        }