/** * Keyboard controll. * It runs general methods. */ private void MainForm_KeyPress(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Left || e.KeyCode == Keys.A) { if (board.moveCellsLeft()) { resetViewPanels(); pressA.BackColor = Color.Orange; if (!board.isGameOver()) { board.addNewField(); drawBoard(); } } else if (board.isGameOver()) { gameOver(); } } else if (e.KeyCode == Keys.Right || e.KeyCode == Keys.D) { if (board.moveCellsRight()) { resetViewPanels(); pressD.BackColor = Color.Orange; if (!board.isGameOver()) { board.addNewField(); drawBoard(); } } else if (board.isGameOver()) { gameOver(); } } else if (e.KeyCode == Keys.Up || e.KeyCode == Keys.W) { if (board.moveCellsUp()) { resetViewPanels(); pressW.BackColor = Color.Orange; if (!board.isGameOver()) { board.addNewField(); drawBoard(); } } else if (board.isGameOver()) { gameOver(); } } else if (e.KeyCode == Keys.Down || e.KeyCode == Keys.S) { if (board.moveCellsDown()) { resetViewPanels(); pressS.BackColor = Color.Orange; if (!board.isGameOver()) { board.addNewField(); drawBoard(); } } else if (board.isGameOver()) { gameOver(); } } if (board.takeBiggestTile() == 2048) { congratulations.Visible = true; gameOver(); } score.updateScore(board.getScoreValue()); score.drawScore(scoreLabel); score.drawBestScore(bestScoreLabel); if (score.isScoreTheBest()) { score.drawScore(bestScoreLabel); } }