You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swish/SwichGIT/Doc/Algorithme/FonctionAnalyseEmpiler.md

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.