void PerformNextDownwardMove() { if (currentBlock == null) { return; } bool blockCanKeepMoving = false; bool shouldUpdateBoard = true; blockCanKeepMoving = currentBlock.MoveDown(tetrisBoard); if (!blockCanKeepMoving) { if (currentBlock.IsBlockAbovePlayArea(boardSizeY)) { LoseGame(); } tetrisBoard = currentBlock.AddToBoard(tetrisBoard); soundEngine.PlaySoundWithName("BlockLand"); currentBlock = null; if (CheckForCompleteLines() || CheckForCompleteColumns()) { gameStepTimer += lineCompleteHangDuration; shouldUpdateBoard = false; } } if (shouldUpdateBoard) { display.UpdateBoard(tetrisBoard, currentBlock); } }
//HandleInput methode voor de TetrisGrid. /// <summary> /// Handles the player input. /// </summary> /// <param name="gameTime">An object with information about the time that has passed in the game.</param> /// <param name="spriteBatch">The SpriteBatch used for drawing sprites and text.</param> /// <param name="LeftMove">When this key is pressed the currently active block is (if possable) moved 1 block to the left in the grid.</param> /// <param name="RightMove">When this key is pressed the currently active block is (if possable) moved 1 block to the right in the grid.</param> /// <param name="RotateCW">When this key is pressed the currently active block is (if possable) rotated 90 degrees Clockwise.</param> /// <param name="RotateCCW">When this key is pressed the currently active block is (if possable) rotated 90 degrees CounterClockwise.</param> /// <param name="GoDown">While this key is pressed the currently active block will move down through the grid at an accelerated speed.</param> public void HandleInput(GameTime gameTime, InputHelper inputHelper, Keys LeftMove, Keys RightMove, Keys RotateCW, Keys RotateCCW, Keys SlamDown, Keys GoDown) { //This part makes sure that the player can move the block to the left and right. if (inputHelper.KeyDown(RightMove) && gameTime.TotalGameTime.Ticks % 6 == 0) //Makes sure the movement is not to fast { Block.MoveRight(); } else if (inputHelper.KeyDown(LeftMove) && gameTime.TotalGameTime.Ticks % 6 == 0) { Block.MoveLeft(); } //The next part is about rotating the blocks. if (inputHelper.KeyPressed(RotateCCW)) { TetrisBlock.RotateCounterClockwiseLegit(Block); } else if (inputHelper.KeyPressed(RotateCW)) { TetrisBlock.RotateClockwiseLegit(Block); } //The following part allows the player to move the block down faster. if (inputHelper.KeyDown(GoDown) && gameTime.TotalGameTime.Ticks % 6 == 0) { Block.MoveDown(); ForceBlockDownwards = true; } else { ForceBlockDownwards = false; } if (inputHelper.KeyPressed(SlamDown)) { Block.SlamDown(); } }
/// <summary> /// Handles all the player input. /// <param name="gameTime"></param> /// <param name="inputHelper"></param> public void HandleInput(GameTime gameTime, InputHelper inputHelper) { switch (gameState) { case GameState.Start: if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Space)) { GameStart(); } break; case GameState.Playing: if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Escape)) { OpenGameMenu(); } if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Left)) { activeBlock.MoveLeft(); } if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Right)) { activeBlock.MoveRight(); } if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Down)) { activeBlock.MoveDown(); } if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Up)) { while (activeBlock != null) { activeBlock.MoveDown(); } } if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.A)) { activeBlock.RotateCounterclockwise(); } if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.D)) { activeBlock.RotateClockwise(); } // Quick GameOver debug cheat if (inputHelper.KeyDown(Microsoft.Xna.Framework.Input.Keys.NumPad0)) { GameOver(); } break; case GameState.GameMenu: if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Escape)) { CloseGameMenu(); } if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Space)) { GameOver(); GameHomescreen(); } break; case GameState.GameOver: if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Space)) { GameStart(); } if (inputHelper.KeyPressed(Microsoft.Xna.Framework.Input.Keys.Escape)) { GameHomescreen(); } break; } }