- **Carte.row** : eniter // Nombre de lignes sur la carte
- **Carte.row** : eniter // Nombre de lignes sur la carte
- **Carte.column** : entier // Nombre de colonnes sur la carte
- **Carte.column** : entier // Nombre de colonnes sur la carte
- **Carte.HTML**: code HTML
- **Carte.HTML**: code HTML
- **Carte.Matrice**: entier[n][k];
- **Carte.Matrice**: entier[row][column];
- **Carte.lesFigures** : Figures [ ]
- **Carte.lesFigures** : Figures [ ]
### Méthodes ###
### Méthodes ###
- **Carte.carteVerticale** : obtient sa carte verticalement symétrique.
- **Carte.carteVerticale** : obtient sa carte verticalement symétrique.
@ -45,6 +46,7 @@
---
---
### STRUCTURE CODE ###
### STRUCTURE CODE ###
// Permet de gérer les informations sur des assemblages de cartes
### Attributs ###
### Attributs ###
- **Code.code** : entier //Nombre de liaisons
- **Code.code** : entier //Nombre de liaisons
@ -62,23 +64,23 @@
- **CarteFille** : Carte sujette, "pièce" à comparer sur le support.
- **CarteFille** : Carte sujette, "pièce" à comparer sur le support.
**Objectif** : Determine le nombre de liaison possible entre CarteMere et CarteFille.
**Objectif** : Determine le nombre de liaison possible entre les deux cartes envoyées en paramètre
**Sortie** : entier,Carte
**Sortie** : Code
**Sortie Possible :**
**Sortie Possible :**
- **-1,CarteMere** : L'assemblage est impossible.
- new Code(**-1,CarteMere**) : L'assemblage est impossible.
- **nbliaisons,CarteMere** : L'assemblage est possible avec un certain nombre de liaisons entre les cartes.
- new Code(**nbliaisons,CarteMere**) : L'assemblage est possible avec un certain nombre de liaisons entre les deux cartes.
### COMMENT FAIRE ###
### COMMENT FAIRE ###
- Pour chaque **Figure** contenu dans **CarteFille.lesFigures**
- Pour chaque **Figure** contenu dans le second paramètre de la fonction (**CarteFille.lesFigures**) :
- On regarde chaque **Figure** contenu dans **CarteMere.lesFigures**
- On regarde chaque **Figure** contenu dans le premier parametre (**CarteMere.lesFigures**) puis on vérifie ces situations :
- Si des figures sont aux mêmes endroits, de même **forme** et de **type** différents, on incrémente le nombre de liaisons.
- Si deux figures sont aux mêmes endroits, de même **forme** et de **type** différents. Dans ce cas, on incrémente le nombre de liaisons.
- Si des figures sont aux mêmes endroits mais que les **Types** sont identiques ou que les **Forme** sont différentes, le nombre de liaisons vaut -1 et on retourne le résultat dans ce cas.
- Si des figures sont aux mêmes endroits mais que les **Types** sont identiques ou que les **Forme** sont différentes. Dans ce cas, il est impossible d'assembler les deux **Cartes**, le nombre de liaisons vaut alors -1 et on retourne le résultat.
- A la fin de la comparaison des **Figures**. On fait la mise à jour de **CarteMere** en faisant la somme des deux cartes puis on retourne le résultat avec le nombre de liaison.
- A la fin de la comparaison des **Figures**. On fait la mise à jour du premier paramètre (**CarteMere**) en faisant la fusion des deux **Cartes** puis on retourne le résultat avec le nombre de liaison dans une nouvelle structure **Code**.
---
---
@ -101,11 +103,11 @@
- On regarde chaque **Figure** contenu dans **CarteMere.lesFigures**
- On regarde chaque **Figure** contenu dans **CarteMere.lesFigures**
- Si l'une des Figures de **CarteFille** est absente de **CarteMere** on l'ajoute à la liste **CarteMere.lesFigures**.
- Si l'une des Figures de **CarteFille** est absente de **CarteMere** on l'ajoute à la liste **CarteMere.lesFigures**.
- Sinon on fait rien
- Sinon on fait rien
- Une fois toutes les figures mises à jour dans **CarteMere.lesFigures**, **CarteMere.Matrice** est aussi mise à jour en faisant apparaitre les figures ainsi que les types par le biais de somme de puissance de 2.
- Une fois toutes les **figures** mises à jour dans **CarteMere.lesFigures**, **CarteMere.Matrice** est aussi mise à jour par le biais de somme de puissance de 2 en fonction des **types** de **Figures**.
---
---
Dans une Matrice si on a :
Dans une Matrice si nous avonsune somme de puissance de 2 dans une cellule, nous sommes capable de déterminer quels types de figures sont présent dans celle-ci :
- 1 -> Petit
- 1 -> Petit
- 2 -> Moyen
- 2 -> Moyen
@ -134,14 +136,14 @@ Dans une Matrice si on a :
### COMMENT FAIRE ###
### COMMENT FAIRE ###
- On supprime la tête de liste de **TasDeCarte** qui est égale à **CarteMere**.
- On supprime la tête de liste envoyée en paramètre qui, au début de cette fonction, est identique au second paramètre de la fonction (**CarteMere**).
- Si **TasDeCarte** est maintenant vide on retourne un **Code** avec**Code.code** = 0 et **Code.Carte** = **CarteMere**.
- Si cette liste, après la suppression de sa tête, est maintenant vide, on retourne une structure **Code** avec pour attribut**Code.code** = 0 et **Code.Carte** = **CarteMere**.
-Sinon on continue
-Sinon on continue la fonction
- On appelle la même fonction **Assemblage** en envoyant la liste **TasDeCarte** et en testant avec toutes les variantes de rotation de la tête de **TasDeCarte**.
- On appelle récursivement cette fonction (**Assemblage**) en envoyant en premier paramètre la nouvelle liste de **Carte**, et en second parametre, toutes les variantes (rotations) possible de la **Carte** en tête de cette même liste.
- Une fois toutes les listes de **Code** retournées par ces appelles de fonctions et récupérées dans une seule :
- Une fois tout les résultats de ces fonctions récupérés dans une seule liste:
- Pour chaque **Code** de la liste :
- Pour chaque index de cette liste :
- Si **Code.code** est différent de -1, on compare **Code.Carte** et **CarteMere**. Puis on ajoute le nombre de liaison à **Code.code**.
- Si nous sommes notifiés via la structure **Code** présente à cet index que l'on peut assembler les cartes, alors on compare la **Carte** et **CarteMere**. Puis on ajoute le nombre de liaison entre elles.