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(); }