7.0 KiB
ANALYSE DE CARTE
DEFINITION DES STRUCTURES
ENUMERATION FORMEFIGURE
- Rond :rond
- Carre :carre
- Triangle : triangle
- Pentagone : pentagone
- Losange : losange
ENUMERATION TYPEFIGURE
- Pleine : pleine
- Creuse : creuse
STRUCTURE FIGURE
Attributs
- Figure.type : TypeFigure
- Figure.forme : FormeFigure
- Figure.X : entier
- Figure.Y : entier
- Figure.HTML : code HTML
Méthodes
- Figure.get...: Retourne l'attributs voulus
###STRUCTURE CARTE ###
Attributs
- Carte.indentifiant : entier
- Carte.row : eniter
- Carte.column : entier
- Carte.HTML: code HTML
- Carte.Matrice: entier[n][k];
- Carte.FigurePleine : Figure
- Carte.FigureCreuse : Figure
Méthodes
- Carte.carteVerticale : obtient sa carte verticalement symétrique.
- Carte.carteHorizontale : obtient sa carte horizontalement symétrique.
- Carte.get... : Retourne l'attributs voulus
COMPARAISON DE CARTE
ComparaisonDeCarte(CarteMere: Carte, CarteFille: Carte) : entier
Entrées :
- CarteMere : Carte témoin, "support" de l'assemblage, il est inutile de modifier sa structure.
- CarteFille : Carte sujet, "pièce" à tester sur le support.
Objectif : Determine si les Cartes possèdent une liaison ( FigurePleine <=> FigureCreuse )
Sortie : entier
Sortie Possible :
-
2 : L'assemblage est parfait ou sans contrainte (Carte NULL). Deux liaisons possible.
-
1 : L'assemblage n'est pas parfait. Cependant, Une liaison possible.
-
0 : L'assemblage est impossible. Aucune liaison possible.
COMMENT FAIRE
- Recherhcer les coordonnées des Figures de CarteMere
- Comparer ces coordonnées sur l'attribut Carte.Matrice de CarteFille
Si les coordonnées de CarteMere.FigurePleine sont égales aux coordonnées de CarteFille.FigureCreuse et inversement on considère ce cas comme une liason.
Faire de même pour les autres Figures.
- Retourner l'entier correspondant à la situation
COMPARAISON TOTALE DE LA CARTE
ComparaisonTotal(CarteMere:Carte d'entiers,CarteFille:Carte, index entier):entier,Carte
Entrees :
- CarteMere : Carte témoin, "support" de l'assemblage, il est inutile de modifier sa structure.
- CarteFille : Carte sujet, "pièce" à tester sur le support.
- index : entier déterminant le nombre d'itération de la fonction
Objectif : Determine si les Cartes possèdent une liaison MAIS avec toutes les possibilitées de rotation de CarteFille
Sortie : entier, Carte
Sortie Possible :
- 2,CarteMere : L'assemblage est parfait ou sans contrainte (Carte NULL). Deux liaisons possible.
- 1,CarteFille : CarteMere est NULL, L'assemblage est possible.
- 1,CarteMere : L'assemblage n'est pas parfait. Cependant, Une liaison possible.
- 3,CarteFille : Il existe deux possibilitées verticalement symétrique d'assemblage. On retourne la CarteFille qui peut s'assembler de deux façons.
- 4,CarteFille : Il existe deux possibilitées horizontalement symétrique d'assemblage. On retourne la CarteFille qui peut s'assembler de deux façons.
- -1,CarteMere : Il est impossible d'assembler CarteFille avec CarteMere
COMMENT FAIRE
- On regarde si CarteMere n'est pas NULL pour savoir si une comparaison d'assemblage est possible.
Si CarteMere est NULL on retourne la sortie associée à ce cas (1,CarteFille)
- On regarde index pour savoir quelle variante de CarteFille (carteverticale,cartehorizontale) tester sur CarteMere. Si toutes les variantes ont été testées, alors on retourne -1,CarteMere.
- On teste la variante avec la fonction COMPARAISON DE CARTE et on traite la sortie de cette comparaison en retournant des informations selon les cas.
TRAITEMENT DE COMPARAISON DE CARTE
Si Sortie = 2
L'assemblage est parfait CarteFille est assemblée avec CarteMere et on retourne 2,CarteMere
Si Sortie = 1
On reagarde si un assemblage symétrique (Verticalement ou Horizontalement) est possible. S'il en existe un on retourne la sortie associée au différent cas.
Sinon,CarteFille est assemblée avec CarteMere et on retourne 1,CarteMere
Si Sortie = 0
L'assemblage de la variante de CarteFille et CarteMere est impossible, on continue en testant COMPARAISON_TOTAL_DE_LA_CARTE(CarteMere,CarteFille,index+1)
ASSEMBLAGE
Assemblage(TasDeCarte: Carte[], CarteMere:Carte :entier, Carte
Entree :
- TasDeCarte : Liste de Carte selectioonnées afin de tester si un assemblage valide est possible.
- CarteMere : Carte témoin, "support" de l'assemblage, il est inutile de modifier sa structure.
Objectif : Savoir si un tas de carte envoyé en paramètre peut être empiler ou non
Sortie : entier, Carte
Sortie Possible
- 2,CarteMere : L'assemblage final est correcte.
- 0,CarteMere : L'assemblage final n'est pas correcte.
COMMENT FAIRE
- On regarde si la liste TasDeCarte n'est pas vide pour savoir si des Cartes doivent être encore testées.
Si TasDeCarte est vide on retourne 0,CarteMere
- On teste avec la fonction COMPARAISON TOTALE DE CARTE , CarteMere et la tête de liste de TasDeCarte et on traite les différentes sorties.
TRAITEMENT DE COMPARAISON TOTALE DE LA CARTE
TRAITEMENT Si TasDeCarte est maintenant vide
Si Sortie = 2
L'assemblage est valide on retourne 2,CarteMere
Si Sortie != 2
Il n'y plus de carte à tester et l'assemblage n'est pas parfait. L'assemblage n'est donc pas valide on retourne 0,CarteMere
TRAITEMENT Si TasDeCarte n'est toujours pas vide
Si Sortie = 2 ou -1
L'assemblage est parfait ou impossible. Cependant il y a encore des cartes à tester. On ajoute donc la Carte contenue dans la Sortie de la fonction COMPARAISON TOTALE à la fin de la liste TasDeCarte et on retourne une nouvelle itération de la fonction Assemblage avec les variables remises à jour.
Si Sortie = 3
Il y a plusieurs possibilités verticalement symétrique d'assemblage, on va donc tester les deux cas avec Assemblage et les nouvelles variables. Si la sélection est correcte, il y a au moins une possibilité de bonne.
Sinon on retourne 0,CarteMere
Si Sortie = 4
Il y a plusieurs possibilités horizontalement symétrique d'assemblage, on va donc tester les deux cas avec Assemblage et les nouvelles variables. Si la sélection est correcte, il y a au moins une possibilité de bonne.
Sinon on retourne 0,CarteMere
Si Sortie = 1
Il y a une seule possibilité d'assemblage. On continu de tester avec Assemblage et les nouvelles variables.