public synchronized void run() {
        int temps;
        this.grille.setScore(this.grille.getScore() + 1);   // des qu'une piece est placée sur le plateau, on augmente le score de 1
        // tant que la partie n'est pas finie
        while (!this.isFin()) { 
            // est ce qu'on triche ???
            if (this.cheat != 0) { 
                this.setPieceSuivante(new Piece(cheat));
            }
            // on ajoute la piece à la grille
            this.grille.ajoute_piece(this.getPieceCourante());
            // est ce qu'on est en pause ??
            if (this.mettreEnPause) {
                try {
                    this.wait();
                } catch (InterruptedException ex) {
                    Logger.getLogger(Partie.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            // si la piece peut descendre d'un coup (cette methode supprime la piece de la grille sans la remettre)
            if (!(this.grille.bloquer_bas(this.pieceCourante))) {
                try {
                    // on rajoute donc la piece et on la décale
                    this.grille.ajoute_piece(this.getPieceCourante());
                    this.grille.decale_bas(this.getPieceCourante());
                    // definition level avec level max
                    if (this.grille.getLevel() < 19) {
                        temps = 1000 - 50 * this.grille.getLevel();
                    } else {
                        temps = 100;
                    }
                    // on fait patienter le thread
                    Thread.currentThread().sleep(temps);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Partie.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else {
                // si la piece ne peut pas descendre alors on teste la fin de partie
                if (!this.grille.fin_partie()) {
                    // si c'est pas la fin, le score augmente, on rajoute la piece, et on teste si des lignes ont été faites
                    this.grille.setScore(this.grille.getScore() + 1);
                    this.grille.ajoute_piece(this.getPieceCourante());
                    this.grille.efface_ligne(this.getPieceCourante());
                    this.setPieceCourante(this.getPieceSuivante());
                    if (this.cheat != 0) {
                        this.setPieceSuivante(new Piece(cheat));
                    } else {
                        this.setPieceSuivante(new Piece());
                    }

                } else {
                    // si c'est la fin de la partie, on arrete tout !
                    this.setFin(true);
                    this.setPieceCourante(null);
                    Thread.currentThread().stop();
                }
            }
        }
    }