Exemple #1
0
		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;
			
		}