Plateau.java 2.88 KB
Newer Older
root's avatar
root committed
1 2 3 4 5 6 7 8 9 10 11 12 13
package tictactoecodingame;

import java.util.ArrayList;

/**
 * @author Franck
 *
 * Classe générique pour les jeux de plateau à 2 joueurs ( une grille de puissance 4 , un échiquier , .. )
 */
public abstract class Plateau  {
 
    abstract public void init();			// Initialise le plateau pour le démarrage d'une nouvelle partie.

14
    abstract public Piece getPiece(Case _case);  	// Retourne la pièce presente sur la case _case
root's avatar
root committed
15

16
    abstract public void joueCoup(Coup _coup);		// Joue le coup _coup sur le plateau
root's avatar
root committed
17 18 19 20 21 22 23 24 25

    abstract public void annuleDernierCoup();		// Annule le dernier coup joué

    abstract public int getNbColonnes();		// Retourne le nombre de colonnes du plateau

    abstract public int getNbLignes();			// Retourne le nombre de lignes du plateau

    abstract public boolean partieTerminee();		// Vrai si la partie est terminee ( soit un gagnant soit un match nulle )

26
    abstract public boolean partieGagnee();		// Vrai si le dernier joueur  a gagné la partie
root's avatar
root committed
27 28 29
    
    abstract public boolean partieNulle();              // Vrai si la partie est nulle
    
30
    abstract public Joueur vainqueur();                  // Retourne le joueur qui a gagné la partie
root's avatar
root committed
31 32 33 34 35

    abstract public ArrayList<Coup> getListeCoups(Joueur _joueur); 	// Retourne la liste des coups possibles.

    abstract public boolean isValide(Coup _coup);		// Retourne Vrai si le coup est valide.

36
    abstract public Coup stringToCoup(String _coup, Joueur _joueur);  // Convertion d'une chaine de caractères en un Coup
root's avatar
root committed
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
    
    abstract public void sauvegardePosition(int _index);              // Sauvegarde la position courante dans l'indice _index
    
    abstract public void restaurePosition(int _index);                 // restaure la  position sauvegarde en indice _index
    
    abstract public Coup getDernierCoup();                  // Retourne le dernierCoup joue
    

    public String toString() {						// Donne une représentation du plateau sous forme d'une chaine de caractères
        Piece piece;
        String chainePlateau = new String();

        for (int ligne = getNbLignes() - 1; ligne >= 0; ligne--) {
            chainePlateau += ligne;
            for (int colonne = 0; colonne < getNbColonnes(); colonne++) {
                piece = getPiece(new Case(colonne, ligne));
                if (piece == null) {
                    chainePlateau += "|   ";
                } else {
                    chainePlateau += "|" + piece + "  ";
                }
            }
            chainePlateau += "|\n  ";
            for (int colonne = 0; colonne < getNbColonnes(); colonne++) {
                chainePlateau += "____";
            }
            chainePlateau += "\n";
        }

        for (int colonne = 0; colonne < getNbColonnes(); colonne++) 
            chainePlateau += "  "+ colonne + " ";
        return chainePlateau;
    }          
}