示例#1
0
        /// <summary>
        /// Handles speech recognition events.
        /// </summary>
        /// <param name="sender">
        /// Object sending the event.
        /// </param>
        /// <param name="e">
        /// Event arguments.
        /// </param>
        private void SpeechRecognized(object sender, SpeechRecognizerEventArgs e)
        {
            // Perform game status check here.
            // If a question was read and we're waiting for answer, proceed.
            // Otherwise return.

            // In other function related to asking a question, set the game status properly


            TriviaDataSource trivia = new TriviaDataSource();

            Question q = trivia.GetQuestion();

            // Semantic value associated with speech commands meant to start a new game.
            const string StartGameSpeechCommand = "START";

            // Semantic value associated with speech commands meant to enable cheating mode (for demo purposes).
            const string EnableRulesSpeechCommand = "RULESENABLE";

            // Semantic value associated with speech commands meant to disable cheating mode (for an honest game).
            const string DisableRulesSpeechCommand = "RULESDISABLE";

            // Semantic value associated with speech commands meant to start a rematch game
            const string RematchSpeechCommand = "REMATCH";

            string[] answers = q.correctAnswers;

            string Answer0 = answers[0];
            string Answer1 = answers[1];
            string Answer2 = answers[2];
            string Answer3 = answers[3];

            if (null == e.SemanticValue)
            {
                return;
            }

            // if theygot the answer correct
            if (e.SemanticValue == Answer0 || e.SemanticValue == Answer1 || e.SemanticValue == Answer2 || e.SemanticValue == Answer3)
            {
            }


            // Handle game mode control commands
            switch (e.SemanticValue)
            {
            case StartGameSpeechCommand:
                DismissWelcome();
                // Call StartGame function to display first question (and maybe begin timer)
                return;

            case DisableRulesSpeechCommand:
                this.rulesEnabled      = false;
                NoRulesText.Visibility = Visibility.Visible;
                return;

            case EnableRulesSpeechCommand:
                // Only restart game if we were currently cheating
                if (!this.rulesEnabled)
                {
                    StartNewGame();
                }

                this.rulesEnabled      = true;
                NoRulesText.Visibility = Visibility.Collapsed;
                return;

            case RematchSpeechCommand:
                StartNewGame();
                return;
            }

            // Handle game play commands
            var square = gameLogic.FindSquare(e.SemanticValue);

            if (null == square)
            {
                UpdateStatusDisplay(Properties.Resources.WrongNumber);
                return;
            }

            // We only handle speech commands with an associated sound source angle, so we can find the
            // associated player
            if (!e.SourceAngle.HasValue)
            {
                return;
            }

            var player = playerTracker.GetClosestPlayer(e.SourceAngle.Value);

            if (null == player)
            {
                // No players found matching sound source angle. Give visual indication of the problem.
                var viewer = GameBoard.GetAt(square.Row, square.Column);
                viewer.BlinkId();
                return;
            }

            var symbol = player2SymbolMap[player];

            this.UpdateGameState(symbol, square);
        }
        /// <summary>
        /// Handles speech recognition events.
        /// </summary>
        /// <param name="sender">
        /// Object sending the event.
        /// </param>
        /// <param name="e">
        /// Event arguments.
        /// </param>
        private void SpeechRecognized(object sender, SpeechRecognizerEventArgs e)
        {
            // Semantic value associated with speech commands meant to start a new game.
            const string StartGameSpeechCommand = "START";

            // Semantic value associated with speech commands meant to enable cheating mode (for demo purposes).
            const string EnableRulesSpeechCommand = "RULESENABLE";

            // Semantic value associated with speech commands meant to disable cheating mode (for an honest game).
            const string DisableRulesSpeechCommand = "RULESDISABLE";

            // Semantic value associated with speech commands meant to start a rematch game
            const string RematchSpeechCommand = "REMATCH";

            if (null == e.SemanticValue)
            {
                return;
            }

            // Handle game mode control commands
            switch (e.SemanticValue)
            {
            case StartGameSpeechCommand:
                DismissWelcome();
                return;

            case DisableRulesSpeechCommand:
                this.rulesEnabled      = false;
                NoRulesText.Visibility = Visibility.Visible;
                return;

            case EnableRulesSpeechCommand:
                // Only restart game if we were currently cheating
                if (!this.rulesEnabled)
                {
                    StartNewGame();
                }

                this.rulesEnabled      = true;
                NoRulesText.Visibility = Visibility.Collapsed;
                return;

            case RematchSpeechCommand:
                StartNewGame();
                return;
            }

            // Handle game play commands
            var square = gameLogic.FindSquare(e.SemanticValue);

            if (null == square)
            {
                UpdateStatusDisplay(Properties.Resources.WrongNumber);
                return;
            }

            // We only handle speech commands with an associated sound source angle, so we can find the
            // associated player
            if (!e.SourceAngle.HasValue)
            {
                return;
            }

            var player = playerTracker.GetClosestPlayer(e.SourceAngle.Value);

            if (null == player)
            {
                // No players found matching sound source angle. Give visual indication of the problem.
                var viewer = GameBoard.GetAt(square.Row, square.Column);
                viewer.BlinkId();
                return;
            }

            var symbol = player2SymbolMap[player];

            this.UpdateGameState(symbol, square);
        }