> Si TasDeCarte(Coy1,Cox1) == 3 ou TasDeCarte(Coy2,Cox2) == 3 alors
> // **CAS N°1 :** Il existe déjà un ensemble ( point <=> cercle) sur **CarteMere** là où **Carte** posséde un point ou un rond
>
> **Si****CarteMere**(Coy1,Cox1) == 3 ou **CarteMere**(Coy2,Cox2) == 3 alors
>
>>// Impossible d'empiler
>
>>retour Code
>>retourne 0
>
>Fin si
>**Fin si**
>
>Si TasDeCarte(Coy1,Cox1) == 1 ou TasDeCarte(Coy2,Cox2) == 2 alors
>// **CAS N°2 :** L'empilement est parfait ! Les coordonnées du point et du cercle de **Carte** peuvent créer deux liaisons ( point <=> cercle ) avec **CarteMere**
>
>>Code <-1
>**Si** **CarteMere**(Coy1,Cox1) == 1 **et****CarteMere**(Coy2,Cox2) == 2 alors
>
>Fin si
>Si TasDeCarte(Coy1,Cox1) == 1 et TasDeCarte(Coy2,Cox2) == 2 alors
>>// Les coordonnées sont bonnes
>
>>Code <-2
>>retourne 2
>
>Fin Si
>
>retour Code
>// **CAS N°3 :** Il est possible de créer une liaison ( point <=> cercle ) entre **CarteMere** et **Carte**
>
>**Si** **CarteMere**(Coy1,Cox1) == 1 **ou****CarteMere**(Coy2,Cox2) == 2 alors
>
>>//Liaison Possible
>
>>retourne 1
>
>**Fin si**
>
>// **CAS N°4 :** On ne peut rien faire avec ces cartes
>
>retourne 0
###FIN
##COMPARAISON TOTAL DE LA CARTE
**ComparaisonTotal(TasDeCarte:Tableau(4,3) d'entiers,CarteFille:Tableau(4,3) d'entiers, index entier)**:entier,Tableau(4,3) d'entiers
**ComparaisonTotal(CarteMere:Matrice(4,3) d'entiers,CarteFille:Matrice(4,3), index entier)**:entier,Tableau(4,3) d'entiers
**Objectif** : Determine si les Cartes possèdent une liaison ( point <=> cercle ) MAIS avec toutes les possibilitées de rotation de **Carte**
###DEBUT
>###Variables locales
>
> Code,Code1 entier
> **Code,Code1** des entiers
>
>---
>
>Si TasDeCarte == NULL alors
>**Si** **CarteMere** est NULL alors
>
>>TasDeCarte <-CarteFille
>
>>Code <-1
>> // Il n'y a rien à faire
>
>>retour Code,TasDeCarte
>>retour **1,CarteFille**
>
>Fin si
>**Fin si**
>
>// **Note** : Cette fonction sait combien de fois elle a été appelée grâce à la variable **index**. En effet pour une carte donnée il existe 4 variantes d'elle-même. La fonction va donc appeler au fur et à mesure toutes ses variantes et les tester.
>
>//On obtient ces opérations suivantes
>
> **Si** index == 1 alors
>
>> // On effectue une rotation verticale pour obtenir **la 2eme variante**
>
>>CarteFille <-rotationVerticale(CarteFille)
>
@ -80,49 +105,71 @@
>
>**Si** index == 2 alors
>
>>// On effectue une rotation Horizontale pour obtenir **la 3eme variante**
>
>>CarteFille <-rotationHorizontale(CarteFille)
>
>**Fin Si**
>
>**Si** index == 3 alors
>
>>// On effectue une rotation Vertivale pour obtenir **la 4eme variante**
>
>>CarteFille <-rotationVerticale(CarteFille)
>
>**Fin Si**
>
>**Si** index == 4 alors
>
>>Code <--1
>>// aucune variante ne colle avec **CarteMere**
>
>>retour Code,TasDeCarte
>>retourne **-1,CarteMere**
>
>**Fin Si**
>
>Code <-ComparaisonDeCarte(TasDeCarte,CarteFille)
>//Après avoir modifié **CarteFille** on peut tester la variante avec **CarteMere**
>>// L'empilement est parfait donc on empile les cartes
>
>>retour Code,TasDeCarte
>>**CarteMere** = **CarteMere** + **CarteFille**
>
>>retourne **Code,CarteMere**
>
>**Fin si**
>
>**Si** Code == 1 alors
>**Si** **Code** == 1 alors*
>
>> // **NOTE :** il est important de vérifier ce cas présent. En effet si une seule liaison est possible, certaines cartes offrent plusieurs possibilités d'assemblage impliquant deux variantes. Comment savoir laquelle est la bonne pour le tas final ? La fonction va le faire remarquer.
>>>// Les variantes horizontalement symétriques possèdent toutes les deux une liaison avec **CarteMere** on ne peut pas savoir laquelle est la bonne pour faire le tas final.