TP2: Simplify the compacter method in the image class.
[TP_POO.git] / TP2 / Image.java
CommitLineData
a988a46e 1
97929775 2class Image extends Forme implements Compactable {
a988a46e 3 final int IMAGE_MAX_SIZE = 100;
a988a46e
JB
4 Forme[] formeCollection;
5 int formeNumber;
6
7 Image() {
009c5b1e 8 super();
a988a46e
JB
9 formeCollection = new Forme[IMAGE_MAX_SIZE];
10 formeNumber = 0;
11 }
12
13 Image(Point p) {
009c5b1e 14 super(p);
a988a46e
JB
15 formeCollection = new Forme[IMAGE_MAX_SIZE];
16 formeNumber = 0;
17 }
18
19 private boolean isEmpty() {
20 return (formeNumber == 0);
21 }
22
23 private boolean isFull() {
24 return (formeNumber >= formeCollection.length);
25 }
26
27 public void dessiner(Piletransformations pile) {
28 for (int i = 0; i < formeNumber; i++) {
29 formeCollection[i].dessiner(pile);
30 }
31 }
32
33 public void deplacer(Point p) {
34 for (int i = 0; i < formeNumber; i++) {
35 formeCollection[i].deplacer(p);
36 }
37 }
38
39 public boolean ajouter(Forme forme) {
145c683d
JB
40 boolean rtVal = false;
41 if (!isFull()) {
42 formeCollection[formeNumber] = forme;
f8ac3cd5 43 formeNumber++;
145c683d
JB
44 rtVal = true;
45 }
46 return rtVal;
a988a46e
JB
47 }
48
5731ae5f
JB
49 public boolean supprimer(int index) {
50 boolean rtVal = false;
51 if (!isEmpty()) {
52 for (int j = index; (j < formeNumber - 1 && index < formeNumber); j++) {
53 formeCollection[j] = formeCollection[j + 1];
54 }
55 rtVal = true;
56 formeNumber--;
57 }
58 return rtVal;
59 }
60
54d3f5b3 61 public void afficher() {
0f1b2018
JB
62 String className = this.getClass().getSimpleName();
63 System.out.println("---- " + className + " ----");
54d3f5b3
JB
64 for (int i = 0; i < formeNumber; i++) {
65 formeCollection[i].afficher();
66 }
67 }
68
97929775 69 public void compacter(int nElements) {
38098a56
JB
70 // Heavy solution
71 /* int minIndex = formeNumber - nElements - 1;
0f1b2018 72 for (int i = formeNumber - 1; (i > minIndex && !isEmpty()); i--) {
5731ae5f 73 supprimer(i);
38098a56
JB
74 } */
75 // Lightweight solution
76 if (formeNumber - nElements > 0) {
77 formeNumber -= nElements;
78 } else {
79 formeNumber = 0;
5731ae5f 80 }
97929775
JB
81 }
82
a988a46e 83}