m1.chocobarlite/src/chocobar/combi/ChocoBar.java
2009-05-01 08:07:06 +00:00

82 lines
1.6 KiB
Java

package chocobar.combi;
/** class Abstraite pour les ChocoBars.
*/
import graph.Vertice;
abstract class ChocoBar implements Vertice {
/* On utilise des variables statiques car elles sont
* forcément partagées par tous les ChocoBar
*/
protected static int size;
protected static int height;
/**
* Affichage de la barre de choco en graphique.
**/
public String toMap()
{
String s = "";
for (int j=0; (j<height); j++) {
for (int i=0; (i<size); i++) {
s += (isBroken(i,j) ? "_" : "X");
}
s += "\n";
}
return s;
}
/**
* Affichage de la barre de choco en ligne.
**/
public abstract String toLine();
/**
* Méthode par défaut
*/
public String toString()
{
return toLine();
}
/**
* Vérifie si le carre (x, y) est déjà mangé.
**/
protected abstract boolean isBroken(int cX, int cY);
/**
* Comparaison de barres.
**/
public abstract boolean equals(ChocoBar comp);
/**
* Recherche si l'on peut être un fils de la ChocoBar.
*/
public abstract boolean isNextOf(ChocoBar parent);
/** Calcul du nombre de combinaisons.
* Cette fonction est récursive pour calculer le nombre de combinaisons.
* C'est correct en attendant une formule mathématique plus rapide.
*/
protected static int nbChocoBars(int n, int m)
{
if (n == 1) {
return (m + 1);
}
int nb = 0;
for (int i=m; (i>=0); i--) {
nb += nbChocoBars(n - 1, i);
}
return nb;
}
// Implémentation de Vertice
public void setLabel(String l) { }
public String getLabel() { return "null"; }
public void setColor(int c) { }
public int getColor() { return 0; }
}