Le code complet vous est donné ci-dessous:
/**
* Une petite classe utilitaire pour commencer
*/
class Couleur {
private char valeur;
public Couleur(char c) {
valeur = c;
}
public void afficher() {
this.afficher(false);
}
public void afficher(boolean feminin) {
switch (valeur) {
case 'r':
System.out.println("rouge");
break;
case 'v':
System.out.print("vert");
if (feminin) {
System.out.println("e");
}
break;
case 'b':
System.out.print("bleu");
if (feminin) {
System.out.println("e");
}
break;
case 'B':
System.out.print("blanc");
if (feminin) {
System.out.println("he");
}
break;
case 'n':
System.out.print("noir");
if (feminin) {
System.out.println("e");
}
break;
}
}
}
// ----------------------------------------------------------------------
// puis.. les classes principales
abstract class Carte {
private int cout;
public Carte() {
cout = 0;
}
public Carte(int cout) {
this.cout = cout;
}
public abstract void afficher();
}
// ----------------------------------------------------------------------
class Terrain extends Carte {
private Couleur couleur;
public Terrain(char c) {
couleur = new Couleur(c);
System.out.println("Un nouveau terrain.");
}
public void afficher() {
System.out.print("Un terrain ");
couleur.afficher();
System.out.println();
}
}
// ----------------------------------------------------------------------
class Creature extends Carte {
private String nom;
private int attaque;
private int defense;
public Creature(int cout, String nom, int attaque, int defense) {
super(cout);
this.nom = nom;
this.attaque = attaque;
this.defense = defense;
System.out.println("Une nouvelle créature.");
}
public void afficher() {
System.out.println("Une créature " + nom + " " + attaque + "/"
+ defense + " ");
}
}
// ----------------------------------------------------------------------
class Sortilege extends Carte {
private String nom;
private String description;
public Sortilege(int cout, String nom, String desc) {
super(cout);
this.nom = nom;
this.description = desc;
System.out.println("Un sortilège de plus.");
}
public void afficher() {
System.out.println("Un sortilège " + nom + " ");
}
}
// ----------------------------------------------------------------------
class Jeu {
private int nombreCartes;
private Carte[] cartes;
public Jeu(int nb) {
nombreCartes = nb;
cartes = new Carte[nb];
System.out.println("On change de main");
}
/**
* Joue une carte après l'autre
*/
public void joue() {
System.out.println("Je joue une carte...");
int i = 0;
while ((cartes[i] == null) && i < nombreCartes) {
i++;
}
if ((i < nombreCartes) && (cartes[i] != null)) {
System.out.println("La carte jouée est :");
cartes[i].afficher();
cartes[i] = null;
} else {
System.out.println("Plus de cartes");
}
}
/**
* Ajoute une carte à la collection
*/
public void piocher(Carte carte) {
int i = 0;
while ((i < nombreCartes) && (cartes[i] != null)) {
i++;
}
if (i < nombreCartes) {
cartes[i] = carte;
} else {
System.out.println("Nombre maximal de cartes atteint");
}
}
public void afficher() {
for (int i = 0; i < nombreCartes; ++i) {
if (cartes[i] != null) {
cartes[i].afficher();
}
}
}
}
// ----------------------------------------------------------------------
class Magic {
public static void main(String[] args) {
Jeu maMain = new Jeu(10);
maMain.piocher(new Terrain('b'));
maMain.piocher(new Creature(6, "Golem", 4, 6));
maMain.piocher(new Sortilege(1, "Croissance Gigantesque",
"La créature ciblée gagne +3/+3 jusqu'à la fin du tour"));
System.out.println("Là, j'ai en stock :");
maMain.afficher();
maMain.joue();
}
}Pages: 1 2