Пример #1
0
        public async Task Run()
        {
            while (GameState != GameState.Running)
            {
                await Task.Delay(1000);
            }

            SetUpGame();

            while (Players.Any() && QuestionPile.Any() && AnswerPile.Any())
            {
                SetUpRound();
                await DealCards();
                await ShowQuestion();

                // Wait for users to pick their answers
                await Sleep(60, CheckIfMaxAnswersHaveBeenSubmitted);
                await ShowAnswers();

                // Wait for users to cast their votes
                await Sleep(60, CheckIfMaxVotesHaveBeenCast);
                await CalculateAndDisplayWinningCard();
                await Sleep(8, () => false);
                await UpdateLeaderboard();
            }

            await ChangeGameState(GameState.Ended);
        }
Пример #2
0
        private void SetUpRound()
        {
            SubmittedAnswers.Clear();
            CurrentQuestion = QuestionPile.Dequeue();

            foreach (var player in Players)
            {
                player.Voted = false;
            }
        }
Пример #3
0
        private void SetUpGame()
        {
            CardGenerator generator = new CardGenerator();

            foreach (var card in generator.GenerateQuestions())
            {
                QuestionPile.Enqueue(card);
            }

            foreach (var card in generator.GenerateAnswers())
            {
                AnswerPile.Enqueue(card);
            }
        }