Пример #1
0
        private void MainForm_KeyDown(object sender, KeyEventArgs e)
        {
            e.SuppressKeyPress = true;

            if (tetrisGame.GameOver || tetrisGame.Paused)
            {
                return;
            }

            if (e.KeyData == Keys.Left || e.KeyData == Keys.A)
            {
                gameField.Move(Direction.Left);
                if (sound)
                {
                    secBuffer = new SecondaryBuffer(Properties.Resources.move, secDev); //创建辅助缓冲区
                    secBuffer.Play(0, BufferPlayFlags.Default);                         //设置缓冲区为默认播放
                }
            }
            if (e.KeyData == Keys.Right || e.KeyData == Keys.D)
            {
                gameField.Move(Direction.Right);
                if (sound)
                {
                    secBuffer = new SecondaryBuffer(Properties.Resources.move, secDev); //创建辅助缓冲区
                    secBuffer.Play(0, BufferPlayFlags.Default);                         //设置缓冲区为默认播放
                }
            }
            if (e.KeyData == Keys.Up || e.KeyData == Keys.W)
            {
                if (gameField.Drop())
                {
                    SetScore(tetrisGame.Score + 5);
                    if (sound)
                    {
                        secBuffer = new SecondaryBuffer(Properties.Resources.collided, secDev); //创建辅助缓冲区
                        secBuffer.Play(0, BufferPlayFlags.Default);                             //设置缓冲区为默认播放
                    }
                }
            }
            if (e.KeyData == Keys.Down || e.KeyData == Keys.S)
            {
                if (gameField.Move(Direction.Down))
                {
                    SetScore(tetrisGame.Score + 1);
                    if (sound)
                    {
                        secBuffer = new SecondaryBuffer(Properties.Resources.down, secDev); //创建辅助缓冲区
                        secBuffer.Play(0, BufferPlayFlags.Default);                         //设置缓冲区为默认播放
                    }
                }
            }
            if (e.KeyData == Keys.Space)
            {
                gameField.RotateTetromino();
                if (sound)
                {
                    secBuffer = new SecondaryBuffer(Properties.Resources.rotate, secDev); //创建辅助缓冲区
                    secBuffer.Play(0, BufferPlayFlags.Default);                           //设置缓冲区为默认播放
                }
            }

            if (e.KeyData == Keys.Q)
            {
                if (!tetrisGame.TetrominoChanged && gameField.IsTetrominoFalling)
                {
                    tetrisGame.NextTetromino = new Tetromino(gameField.ChangeTetromino(tetrisGame.NextTetromino).Type);
                    nextTetromino.Clear();
                    nextTetromino.DrawTetromino(tetrisGame.NextTetromino.MoveTo(1, 1), false);
                    tetrisGame.TetrominoChanged = true;
                    if (sound)
                    {
                        secBuffer = new SecondaryBuffer(Properties.Resources.exchange, secDev); //创建辅助缓冲区
                        secBuffer.Play(0, BufferPlayFlags.Default);                             //设置缓冲区为默认播放
                    }
                    if (tetrisGame.NextTetromino == Tetromino.Zero)
                    {
                        OnGameOver();
                    }
                }
                if (tetrisGame.TetrominoChanged)
                {
                    ShowTips(0);
                }
            }
            Refresh();
        }