public static void HandleKeyInput(GameSettings gameSettings, Connect4Game gameLogic, KeyboardState keyboardState, IBoard board) { if(gameLogic.GameState != GameSettings.GAMESTATE.S_Player1Move) return; #region Right key if (!flagRight && !flagDown) { if (keyboardState.IsKeyDown(Keys.Right)) { flagRight = true; if (gameLogic.column < gameSettings.COLUMNS - 1) { // Update gamefield information gameLogic.column++; gameLogic.SetRow(gameLogic.column); } else { // Update gamefield information gameLogic.column = 0; gameLogic.SetRow(gameLogic.column); } board.Update(gameLogic.column * board.ColumnDistance); } } #endregion #region Left key if (!flagLeft && !flagDown) { if (keyboardState.IsKeyDown(Keys.Left)) { flagLeft = true; if (gameLogic.column > 0) { // Update gamefield information gameLogic.column--; gameLogic.SetRow(gameLogic.column); } else { // Update gamefield information gameLogic.column = gameSettings.COLUMNS - 1; gameLogic.SetRow(gameLogic.column); } board.Update(gameLogic.column * board.ColumnDistance); } } #endregion #region Down key if (!flagDown) { if (keyboardState.IsKeyDown(Keys.Down) && gameLogic.row != -1) { flagDown = true; gameLogic.SetRow(gameLogic.column); gameLogic.AddRowElement(gameLogic.column, gameLogic.row); // Update game field gameLogic.UpdateGameField(); // Drop player stone gameLogic.GameState = GameSettings.GAMESTATE.S_DropPlayerStone; } } #endregion // Reset flags if (!keyboardState.IsKeyDown(Keys.Right)) flagRight = false; if (!keyboardState.IsKeyDown(Keys.Left)) flagLeft = false; if (!keyboardState.IsKeyDown(Keys.Down)) flagDown = false; }