Example #1
0
        public IHttpActionResult GetStartQuizGame(string userId, string quizId)
        {
            var quizGame = new WIQuest.Web.API.Responses.QuizGameCreate();

            try
            {
                var gameService = new GamePlayService();
                var game        = gameService.CreateSingleUserGame(userId, Guid.Parse(quizId));

                if (game != null)
                {
                    quizGame.GameId   = game.Id;
                    quizGame.PlayerId = game.Players.First().Id;
                    quizGame.Quiz     = game.Levels.First().Quiz;
                }
                else
                {
                    quizGame.Message = "Quiz existiert nicht!";
                }
            }
            catch (Exception e)
            {
                quizGame.Message = e.Message;
            }

            quizGame.Message = "Test";

            return(Ok(quizGame));
        }
Example #2
0
        public async Task TestService()
        {
            var service = new GamePlayService();
            var result  = await service.GetGamePlay();

            Assert.IsNotNull(result);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id">QuizId</param>
        /// <returns></returns>
        public ActionResult StartGame(Guid id)
        {
            // User identifizieren
            var user = GetCurrentUser();

            // Spiel anlegen
            var gameService = new GamePlayService();
            var game        = gameService.CreateSingleUserGame(user.Id, id);

            var gameState = new GamePlayState();

            gameState.Game   = game;
            gameState.Player = game.Players.First();
            gameState.Quiz   = game.Levels.First().Quiz;

            // Den Fragenkatalog sortiert aufbauen
            foreach (var quizSection in gameState.Quiz.Sections.OrderBy(x => x.Order))
            {
                foreach (var quizQuestion in quizSection.Questions.OrderBy(x => x.Order))
                {
                    gameState.QuestionsLeft.Add(quizQuestion.Question);
                }
            }

            // TODO: Hier jetzt die Option des Quiz einbauen
            // Fragen mischen
            gameState.QuestionsLeft.Shuffle();


            // Statistik erstellen
            gameState.QuestionTotalCount = gameState.QuestionsLeft.Count;

            // In einer Session sichern
            // oder in DB?
            Session["GameState"] = gameState;


            var question = gameState.QuestionsLeft.FirstOrDefault();

            var model = new QuestionViewModel();

            model.Question = question;
            model.Answers  = question.Answers.ToList();
            model.Answers.Shuffle();
            model.Total = gameState.QuestionTotalCount;
            model.Index = gameState.QuestionTotalCount - gameState.QuestionsLeft.Count + 1;

            gameState.CurrentQuestion = model;

            //return View("PlayGameSPA", model);
            return(View("PlayGame", model));
        }
Example #4
0
        public ActionResult StartGame(Guid id)
        {
            // User identifizieren
            // den gibt es nicht => dummy user!
            var user = GetAnoynmousUser();

            // Spiel anlegen
            var gameService = new GamePlayService();
            var game        = gameService.CreateSingleUserGame(user.Id, id);

            var gameState = new GamePlayState();

            gameState.Game   = game;
            gameState.Player = game.Players.First();
            gameState.Quiz   = game.Levels.First().Quiz;

            foreach (var quizSection in gameState.Quiz.Sections)
            {
                foreach (var quizQuestion in quizSection.Questions)
                {
                    gameState.QuestionsLeft.Add(quizQuestion.Question);
                }
            }

            // Fragen mischen
            gameState.QuestionsLeft.Shuffle();


            // Statistik erstellen
            gameState.QuestionTotalCount = gameState.QuestionsLeft.Count;

            // In einer Session sichern
            // oder in DB?
            Session["GameState"] = gameState;


            var question = gameState.QuestionsLeft.FirstOrDefault();

            var model = new QuestionViewModel();

            model.Question = question;
            model.Answers  = question.Answers.ToList();
            model.Answers.Shuffle();
            model.Total = gameState.QuestionTotalCount;
            model.Index = gameState.QuestionTotalCount - gameState.QuestionsLeft.Count + 1;

            gameState.CurrentQuestion = model;

            //return View("PlayGameSPA", model);
            return(View("PlayGame", model));
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="exId">ExerciseId</param>
        /// <param name="subId">Subscription</param>
        /// <returns></returns>
        public ActionResult StartExercise(Guid exId, Guid subId)
        {
            // User identifizieren
            var user = GetCurrentUser();

            var exercise     = QuizDb.TrainingExercises.SingleOrDefault(x => x.Id == exId);
            var subscription = QuizDb.TrainingGroupSubscriptions.SingleOrDefault(x => x.Id == subId);



            // Spiel anlegen
            var gameService = new GamePlayService(QuizDb);
            var game        = gameService.CreateSingleUserGame(user.Id, exercise.Quiz.Id);

            var practice = new TrainingPractice
            {
                Exercise     = exercise,
                Game         = game,
                Subscription = subscription
            };

            QuizDb.TrainingPractices.Add(practice);
            QuizDb.SaveChanges();

            var gameState = new GamePlayState
            {
                Game     = game,
                Player   = game.Players.First(),
                Quiz     = game.Levels.First().Quiz,
                Practice = practice
            };

            // Den Fragenkatalog sortiert aufbauen
            foreach (var quizSection in gameState.Quiz.Sections.OrderBy(x => x.Order))
            {
                foreach (var quizQuestion in quizSection.Questions.OrderBy(x => x.Order))
                {
                    gameState.QuestionsLeft.Add(quizQuestion.Question);
                }
            }

            // TODO: Hier jetzt die Option des Quiz einbauen
            // Fragen mischen
            gameState.QuestionsLeft.Shuffle();


            // Statistik erstellen
            gameState.QuestionTotalCount = gameState.QuestionsLeft.Count;

            // In einer Session sichern
            // oder in DB?
            Session["GameState"] = gameState;


            var question = gameState.QuestionsLeft.FirstOrDefault();

            var model = new QuestionViewModel
            {
                Question = question,
                Answers  = question.Answers.ToList()
            };

            model.Answers.Shuffle();
            model.Total = gameState.QuestionTotalCount;
            model.Index = gameState.QuestionTotalCount - gameState.QuestionsLeft.Count + 1;

            gameState.CurrentQuestion = model;

            //return View("PlayGameSPA", model);
            return(View("PlayGame", model));
        }