Exemplo n.º 1
0
 /**
  * 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);
     }
 }