82 lines
1.6 KiB
Java
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; }
|
|
}
|