Bonjour et bonsoir à toutes et à tous!

Alors voilà, je suis un jeune étudiant en informatique et pour réussir cette année il me faut rendre un jeu qui tourne. Ce jeu c'est le Quatro, une sorte de Puissance 4. La différence est que les pions ne sont pas seulement soit blanc soit noir, ils sont aussi soit grands soit petits, soit carrés soit ronds et soit creusés soit pleins.

Je rencontre divers problèmes durant mon codage et je crois que j'ai trop de questions. Les poser à mes amis étudiants fut une solution au début mais je crois que je prenais beaucoup trop de leurs temps, ce qui fait que je viens vers vous, Ô aide indispensable à ma réussite

Par contre, je ne viens pas demander des réponses toutes faites, des éclaircissements seraient parfaits!
Je vous remercie d'avance!

Je vous explique où j'en suis :

J'ai tout d'abord comme demandé sur ma feuille d'instructions crée quatre énumérations : filling, shape, color & size. Ces quatre énumérations, je les ai regroupées dans un objet Piece.

Donc une piece a une couleur, une taille, est pleine ou vide et a une forme.
Exemple : Piece = WHITE, HOLLOW, TALL & ROUND

Maintenant je dois créer une liste d'objets de types pieces et y mettre les 16pieces de types différents.
Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package quarto;
import java.util.ArrayList;
/**
 *
 * @author dell portable
 */
public class Stock {
    private ArrayList pieces;
 
    public Stock() {
        ArrayList<Piece> pieces = new ArrayList<Piece>(16);
        this.pieces.add(new Piece(Filling.HOLLOW, Shape.ROUND, Size.SHORT, Color.WHITE));
this.pieces.add(new Piece(Filling.HOLLOW, Shape.ROUND, 
        Size.SHORT, Color.WHITE));
this.pieces.add(new Piece(Filling.HOLLOW, Shape.ROUND, 
        Size.SHORT, Color.BLACK));
this.pieces.add(new Piece(Filling.HOLLOW, Shape.ROUND, 
        Size.TALL, Color.WHITE));
this.pieces.add(new Piece(Filling.HOLLOW, Shape.ROUND, 
        Size.TALL, Color.BLACK));
this.pieces.add(new Piece(Filling.HOLLOW, Shape.SQUARE, 
        Size.SHORT, Color.WHITE));
this.pieces.add(new Piece(Filling.HOLLOW, Shape.SQUARE, 
        Size.SHORT, Color.BLACK));
this.pieces.add(new Piece(Filling.HOLLOW, Shape.SQUARE, 
        Size.TALL, Color.WHITE));
this.pieces.add(new Piece(Filling.HOLLOW, Shape.SQUARE, 
        Size.TALL, Color.BLACK));
this.pieces.add(new Piece(Filling.SOLID, Shape.ROUND, 
        Size.SHORT, Color.WHITE));
this.pieces.add(new Piece(Filling.SOLID, Shape.ROUND, 
        Size.SHORT, Color.BLACK));
this.pieces.add(new Piece(Filling.SOLID, Shape.ROUND, 
        Size.TALL, Color.WHITE));
this.pieces.add(new Piece(Filling.SOLID, Shape.ROUND, 
        Size.TALL, Color.BLACK));
this.pieces.add(new Piece(Filling.SOLID, Shape.SQUARE, 
        Size.SHORT, Color.WHITE));
this.pieces.add(new Piece(Filling.SOLID, Shape.SQUARE, 
        Size.SHORT, Color.BLACK));
this.pieces.add(new Piece(Filling.SOLID, Shape.SQUARE, 
        Size.TALL, Color.WHITE));
this.pieces.add(new Piece(Filling.SOLID, Shape.SQUARE, 
        Size.TALL, Color.BLACK));
    }
Dans un premier temps, je me disais que c'était bête de tout marquer de cette manière. Imaginons que je doive coder un jeu qui regroupe 20 manieres différentes de faire un quatro...
Je vois bien un arbre où :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
   PIECE
                                                                                              /        \
                                                                                     HOLLOW       SOLID
                                                                                      /       \         /     \
                                                                           ROUND      SQUARE
                                                                              /    \
                                                                      TALL        SHORT
                                                                     /     \
                                                                WHITE   BLACK
Mais logiquement je vois pas trop où je peux gagner du temps à faire les choses ainsi.

Ensuite en seconde question, on me demande de redéfinir toString() pour qu'elle retourne un String qui renseigne sur les caractéristiques des pieces de la liste sous la forme d'une liste numérotée.
Exemple :

0 WHITE SHORT HOLLOW SQUARE
1 WHITE TALL SOLID SQUARE
2 WHITE SHORT SOLID SQUARE
etc...

Mon probléme c'est que je comprends pas trop la méthode toString(). Donc je crois que ce bout de code est bon, mais comment faire une implémentation?
Je pourrais faire un :
-Pour i de 0 a 15 faire
piece i + filling + shape + size + color
-fin pour


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
@Override
    public String toString() {
       for (int i = 0; i<=15; i++){
        return i + filling + shape + size + color;
}    
    }
Mais là je me dis que tout part en couilles xD Car je return 15fois ce qui est totalement n'importe quoi. Devrais-je faire une liste que je convertisse en String? ou un Tableau?

Merci d'avance et désolé pour mon niveau :/