Example #1
0
    // Handelt de input van de speler af.
    public void HandleInput(GameTime gameTime, InputHelper inputHelper)
    {
        if (gameState == GameState.Playing)
        {
            // Laath het blokje met de klok mee draaien en controleert daarbij of het een kant of andere blokjes raakt.
            if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.E))
            {
                tetrisBlock.Rotate();
                if (tetrisBlock.BottomBounds())
                {
                    tetrisBlock.Rotate(false);
                }
                else
                {
                    while (tetrisBlock.SideBounds())
                    {
                        if (tetrisBlock.Position.X < 5)
                        {
                            tetrisBlock.Position += new Point(1, 0);
                        }
                        else
                        {
                            tetrisBlock.Position += new Point(-1, 0);
                        }
                    }
                }
            }

            // Laat het blokje tegen de klok in draaien en controleert daarbij of het een kant of andere blokjes raakt.
            if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Q))
            {
                tetrisBlock.Rotate(false);
                if (tetrisBlock.BottomBounds())
                {
                    tetrisBlock.Rotate();
                }
                else
                {
                    while (tetrisBlock.SideBounds())
                    {
                        if (tetrisBlock.Position.X < 5)
                        {
                            tetrisBlock.Position += new Point(1, 0);
                        }
                        else
                        {
                            tetrisBlock.Position += new Point(-1, 0);
                        }
                    }
                }
            }

            // Beweegt het blokje naar links.
            if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.A))
            {
                tetrisBlock.Position -= new Point(1, 0);
                if (tetrisBlock.SideBounds())
                {
                    tetrisBlock.Position += new Point(1, 0);
                }
            }

            // Beweegt het blokje naar rechts.
            if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.D))
            {
                tetrisBlock.Position += new Point(1, 0);
                if (tetrisBlock.SideBounds())
                {
                    tetrisBlock.Position -= new Point(1, 0);
                }
            }

            // Beweegt het blokje een stap naar beneden.
            if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.S))
            {
                MoveDown();
            }

            // Beweegt het blokje in hoger tempo naar beneden als de S key ingedrukt gehouden wordt.
            if (inputHelper.KeyDown(Microsoft.Xna.Framework.Input.Keys.S))
            {
                timePressed += gameTime.ElapsedGameTime.TotalMilliseconds;
                delay       += (int)gameTime.ElapsedGameTime.TotalMilliseconds;
                if (timePressed >= 300 && delay >= 100)
                {
                    MoveDown();
                    delay = 0;
                }
                if (!inputHelper.KeyDown(Microsoft.Xna.Framework.Input.Keys.S))
                {
                    timePressed = 0;
                }
            }
        }

        // Reset de game naar het menu.
        if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.R))
        {
            Reset();
        }

        // Sluit het spel af.
        if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Escape))
        {
            game.Quit();
        }


        // Laat de speler kiezen tussen hard mode of easy mode in het begin scherm.
        if (gameState == GameState.Init)
        {
            mousePos = inputHelper.MousePosition;
            if (inputHelper.MouseLeftButtonPressed())
            {
                gameState = GameState.Playing;
                if (mousePos.X < TetrisGame.ScreenSize.X / 2)
                {
                    gameType = GameType.Normal;
                    MediaPlayer.Play(normalTheme);
                    nrBlocks  = 7;
                    dropSpeed = 1000;
                }
                else
                {
                    gameType = GameType.Hard;
                    MediaPlayer.Play(hardTheme);
                    nrBlocks  = 10;
                    dropSpeed = 600;
                }

                //Twee keer ResetBlock om een nieuwe waarde voor block en nextblock te krijgen, die bij de goede gamemode hoort
                ResetBlock();
                ResetBlock();
            }
        }
    }