public void protocolGameInfo() {
    /* On vérifie que c'est bien la première fois qu'on reçoit les informations (pour cela on regarde
     * si l'ensemble des joueurs est vide) */
    if (pong.setPlayers.isEmpty()) {
      /* On place la balle à la bonne position */
      int positionBallX = Integer.parseInt(tab[1]);
      int positionBallY = Integer.parseInt(tab[2]);
      Ball ball = pong.getBall();
      ball.setPosition(new Point(positionBallX, positionBallY));
      pong.setBall(ball);

      /* On instancie tous les joueurs distants */
      for (int i = 3; i < tab.length; i++) {
        String[] curPlayer = tab[i].split(";");
        PlayerID playerID = PlayerID.valueOf(curPlayer[0]);
        int score = Integer.parseInt(curPlayer[1]);
        int positionRacketX = Integer.parseInt(curPlayer[2]);
        int positionRacketY = Integer.parseInt(curPlayer[3]);
        String host = curPlayer[4];
        int port = Integer.parseInt(curPlayer[5]);

        Player player = new Player(playerID, score, positionRacketX, positionRacketY, host, port);
        pong.setPlayers.add(player);
      }
    }
  }
  public void protocolPlayer() {
    String[] curPlayer = tab[1].split(";");
    PlayerID playerID = PlayerID.valueOf(curPlayer[0]);
    int positionRacketX = Integer.parseInt(curPlayer[2]);
    int positionRacketY = Integer.parseInt(curPlayer[3]);

    /* On met à jour la position du joueur */
    Iterator<Player> it = pong.setPlayers.iterator();
    while (it.hasNext()) {
      Player player = it.next();
      if (player.getPlayerID() == playerID) {
        Racket racket = player.getRacket();

        /* Anti-cheat */
        if ((positionRacketX > (racket.getPositionX() + racket.getSpeed()) && racket.getSpeed() > 0)
            || (positionRacketX < (racket.getPositionX() + racket.getSpeed())
                && racket.getSpeed() < 0)
            || (positionRacketY > (racket.getPositionY() + racket.getSpeed())
                && racket.getSpeed() > 0)
            || (positionRacketY < (racket.getPositionY() + racket.getSpeed())
                && racket.getSpeed() < 0)) {
          errorCheat("Raquette avec coordonnées invalides (cheat)");
        }

        racket.setPosition(new Point(positionRacketX, positionRacketY));
        player.setRacket(racket);
      }
    }
  }
  public void protocolBall() {
    /* On met à jour la position de la balle */
    int positionBallX = Integer.parseInt(tab[1]);
    int positionBallY = Integer.parseInt(tab[2]);

    Ball ball = pong.getBall();

    /* Anti-cheat */
    if ((positionBallX > (ball.getPositionX() + ball.getSpeedX()) && ball.getSpeedX() > 0)
        || (positionBallX < (ball.getPositionX() + ball.getSpeedX()) && ball.getSpeedX() < 0)
        || (positionBallY > (ball.getPositionY() + ball.getSpeedY()) && ball.getSpeedY() > 0)
        || (positionBallY < (ball.getPositionY() + ball.getSpeedY()) && ball.getSpeedY() < 0)) {
      errorCheat("Balle avec coordonnées invalides (cheat)");
    }

    ball.setPosition(new Point(positionBallX, positionBallY));
    pong.setBall(ball);

    /* On met à jour les scores */
    for (int i = 3; i < tab.length; i++) {
      String[] curPlayer = tab[i].split(";");
      PlayerID playerID = PlayerID.valueOf(curPlayer[0]);
      int score = Integer.parseInt(curPlayer[1]);

      Iterator<Player> it = pong.setPlayers.iterator();
      while (it.hasNext()) {
        Player player = it.next();
        if (player.getPlayerID() == playerID) {
          player.setScore(score);
        }
      }
    }
  }
  public void protocolNewPlayer() {
    /* On instancie un nouveau joueur distant */
    String[] curPlayer = tab[1].split(";");
    PlayerID playerID = PlayerID.valueOf(curPlayer[0]);
    int score = Integer.parseInt(curPlayer[1]);
    int positionRacketX = Integer.parseInt(curPlayer[2]);
    int positionRacketY = Integer.parseInt(curPlayer[3]);
    String host = curPlayer[4];
    int port = Integer.parseInt(curPlayer[5]);

    Player player = new Player(playerID, score, positionRacketX, positionRacketY, host, port);
    pong.setPlayers.add(player);
  }