private void updatePlayer2ScoreViewer(int removedRowNumber) {
   player2ScoreCounter.increaseScores(removedRowNumber);
   board
       .getPlayer2ScoresViewer()
       .update(
           player2ScoreCounter.getScores(),
           player2ScoreCounter.getNextLevelScores(),
           player2ScoreCounter.getLevel());
 }
 void addScoreCounter() {
   int size = (int) (Metrics.squareButtonSize * Metrics.squareButtonScale);
   scoreCounter = new ScoreCounter(activity, size * 32 / 10, size);
   scoreCounter.setVisibility(View.GONE);
   scoreCounter.setScore(prefs.getScore());
   RelativeLayout.LayoutParams lp =
       new RelativeLayout.LayoutParams(
           ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
   lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
   lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
   layout.addView(scoreCounter.getView(), lp);
 }
  @Override
  public synchronized void startGame() {
    try {
      stopPlayer1GameTimer();
      stopPlayer2GameTimer();

      networkManager.sendCommand(StartGameCommand.class);

      player1ScoreCounter.reset();
      player2ScoreCounter.reset();
      updatePlayer1ScoreViewer(0);
      updatePlayer2ScoreViewer(0);

      board.getTetrisModel().clear();

      board.getTetrisModel().getFigureManager1().pregenerateFigure();
      board.getPlayer1PreviewerModel().clear();
      board
          .getTetrisModel()
          .getFigureManager1()
          .getNextFigure()
          .putFigure(board.getPlayer1PreviewerModel(), 4, 0);
      final AbstractFigure figure1 = board.getTetrisModel().getFigureManager1().getCurrentFigure();
      board.getTetrisModel().setFigure1(figure1);
      figure1.putFigure(board.getTetrisModel(), 4, 0);

      board.getTetrisModel().getFigureManager2().pregenerateFigure();
      board.getPlayer2PreviewerModel().clear();
      board
          .getTetrisModel()
          .getFigureManager2()
          .getNextFigure()
          .putFigure(board.getPlayer2PreviewerModel(), 4, 0);
      final AbstractFigure figure2 = board.getTetrisModel().getFigureManager2().getCurrentFigure();
      board.getTetrisModel().setFigure2(figure2);
      figure2.putFigure(board.getTetrisModel(), 14, 0);

      gameStarted = true;
      gamePaused = false;

      restartPlayer1GameTimer();
      restartPlayer2GameTimer();

      repaintPlayer1Previewer();
      repaintPlayer2Previewer();
      repaintDownShifter();
    } catch (IOException ex) {
      interraptGame(ex);
    }
  }
  @Test
  public void testScoreWith1Spare() {
    List<String> partie =
        new ArrayList<String>() {
          {
            add("1");
            add("9");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
          }
        };

    assertEquals(new Integer(29), counter.getScore(partie));
  }
  @Test
  public void testCountScoreNul() {
    List<String> partie =
        new ArrayList<String>() {
          {
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
            add("0");
          }
        };

    assertEquals(new Integer(0), counter.getScore(partie));
  }
  private void restartPlayer2GameTimer() {
    stopPlayer2GameTimer();

    player2GameTimer = new Timer(true);
    player2GameTimer.schedule(
        new TimerTask() {

          @Override
          public void run() {
            synchronized (GameControllerServer.this) {
              if (gamePaused || !gameStarted) {
                return;
              }

              try {
                if (board.getTetrisModel().getFigure2().pushDown()
                    == AbstractFigure.RESULT_FREEZED) {
                  updatePlayer2ScoreViewer(board.getTetrisModel().removeRows());
                  board.getTetrisModel().getFigureManager2().pregenerateFigure();
                  /*
                   * Put preview figure
                   */
                  board.getPlayer2PreviewerModel().clear();
                  board
                      .getTetrisModel()
                      .getFigureManager2()
                      .getNextFigure()
                      .putFigure(board.getPlayer2PreviewerModel(), 4, 0);
                  repaintPlayer2Previewer();
                  /*
                   * Put new figure
                   */
                  final AbstractFigure figure =
                      board.getTetrisModel().getFigureManager2().getCurrentFigure();
                  board.getTetrisModel().setFigure2(figure);
                  if (!figure.putFigure(board.getTetrisModel(), 14, 0)) {
                    gameOver();
                  } else {
                    board.getDownShifter().doShift();
                    networkManager.sendCommand(DoShiftCommand.class);
                  }
                }

                repaintDownShifter();
              } catch (IOException e) {
                interraptGame(e);
              }
            }
          }
        },
        player2ScoreCounter.getSpeed(),
        player2ScoreCounter.getSpeed());
  }
  @Test
  public void testCountScoreBeginer() {
    //		Differentes façon d'initialiser une liste
    //		List <String> partie2 = Arrays.asList( "1" , "1");
    //
    //		List <String> partie3 = new ArrayList<String>();
    //		Collections.addAll(partie3, "A", "B", "C", "D");

    List<String> partie =
        new ArrayList<String>() {
          {
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
            add("1");
          }
        };

    assertEquals(new Integer(20), counter.getScore(partie));
  }
 @Override
 public void run() {
   scoreCounter.setVisibility(View.GONE);
 }
 @Override
 public void run() {
   scoreCounter.setScoreProlonged(prefs.getScore());
   scoreCounter.setVisibility(View.VISIBLE);
 }