public void DrawCurrentFigure(Tetrominoe currentFigure, int currentFigureRow, int currentFigureCol) { var tetrisConsoleWriter = new TetrisConsoleWriter(tetrisRows, tetrisCols, tetrisInfo); for (int row = 0; row < currentFigure.Body.GetLength(0); row++) { for (int col = 0; col < currentFigure.Body.GetLength(1); col++) { if (currentFigure.Body[row, col]) { tetrisConsoleWriter.Write("*", row + 1 + currentFigureRow, col + 1 + currentFigureCol); } } } }
public void DrawTetrisField(bool[,] tetrisField) { var tetrisConsoleWriter = new TetrisConsoleWriter(tetrisRows, tetrisCols, tetrisInfo); for (int row = 0; row < tetrisField.GetLength(0); row++) { for (int col = 0; col < tetrisField.GetLength(1); col++) { if (tetrisField[row, col]) { tetrisConsoleWriter.Write("*", row + 1, col + 1); } } } }
public void KeyAvailable(TetrisConsoleWriter tetrisConsoleWriter, Random random) { while (true) { if (Console.KeyAvailable) { var key = Console.ReadKey(); if (key.Key == ConsoleKey.Escape) { return; } if (key.Key == ConsoleKey.LeftArrow || key.Key == ConsoleKey.A) { if (gameState.CurrentFigureCol >= 1) { gameState.CurrentFigureCol--; } } if (key.Key == ConsoleKey.RightArrow || key.Key == ConsoleKey.D) { if (gameState.CurrentFigureCol < tetrisCols - gameState.CurrentFigure.Height) { gameState.CurrentFigureCol++; } } if (key.Key == ConsoleKey.DownArrow || key.Key == ConsoleKey.S) { gameState.Frame = 1; gameState.Score++; gameState.CurrentFigureRow++; } if (key.Key == ConsoleKey.UpArrow || key.Key == ConsoleKey.W || key.Key == ConsoleKey.Spacebar) { var newFigure = gameState.CurrentFigure.GetRotate(); if (!Collision(newFigure)) { gameState.CurrentFigure = newFigure; } } } if (gameState.Frame % gameState.FrameToMoveFigure == 0) { gameState.CurrentFigureRow++; gameState.Frame = 0; } if (Collision(gameState.CurrentFigure)) { AddCurrentFigureToTheTetrisField(); int lines = CheckFrFullLines(); tetrisConsoleWriter.DrawAll(gameState); gameState.CurrentFigure = tetrisFigures[random.Next(0, tetrisFigures.Count)]; gameState.CurrentFigureRow = 0; gameState.CurrentFigureCol = 0; if (Collision(gameState.CurrentFigure)) { tetrisConsoleWriter.Write("Game over!", 10, 7); Console.ReadKey(); } } gameState.Frame++; tetrisConsoleWriter.DrawAll(gameState); Thread.Sleep(10); } }