module special.puzzle_girafe
#
Short summary#
module ensae_teaching_cs.special.puzzle_girafe
Fonctions, classes pour résoudre un puzzle à 9 pièces disposé en carré 3x3. Voir Résolution d’un puzzle.
Classes#
class |
truncated documentation |
---|---|
définition d’une classe puzzle, elle contient simplement une liste de 9 pièces dont les positions sont |
|
Définition d’un bord ou côté d’une pièce, il possède : |
|
Définition d’une pièce du puzzle, celle-ci inclut : |
Functions#
function |
truncated documentation |
---|---|
affiche les pièces sur l’écran, en plus petit pour celles qui ne sont pas encore placées |
|
affiche la pièce en tenant compte de sa position et de son orientation |
|
Simulation graphique. Illuste la résolution du puzzle |
Methods#
method |
truncated documentation |
---|---|
on définit le puzzle à partir des informations contenues dans le répertoire data de ce module qui doit contenir … |
|
on définit la pièce |
|
ce qu’on doit afficher lorsqu’on exécute l’instruction print avec un objet de type |
|
Cette méthode est appelée lorsqu’on exécute l’instruction print avec un objet de type |
|
définition ce qu’on doit afficher lorsqu’on exécute l’instruction print avec un objet de type |
|
retourne l’ensemble des angles possibles pour une pièce donnée |
|
retourne le bord connaissant l’orientation de la pièce, le bord demandé est celui correspondant à : |
|
dit si deux bords sont compatibles, c’est à dire de la même couleur et de partie différente |
|
retourne les positions voisins de la position i |
|
charge l’image pour une simulation graphique |
|
charge les images pour une simulation graphique |
|
retourne la prochaine pièce à placer sur le puzzle, dans un premier temps, on peut prend la première qui vient, … |
|
retourne le nombre de places vides |
|
recherche la piece associée à la position pi |
|
retourne en fonction de la position (1 à 9) de la pièce sa position sur l’écran, soit deux coordonnées |
|
Résoud le puzzle de façon récursive : on pose une pièce puis on résoud le puzzle restant (une pièce en moins, une … |
|
détermine si la pièce self peut être voisine avec la pièce p tournée de l’angle a |
Documentation#
Fonctions, classes pour résoudre un puzzle à 9 pièces disposé en carré 3x3. Voir Résolution d’un puzzle.
- class ensae_teaching_cs.special.puzzle_girafe.PuzzleGirafe#
Bases :
object
définition d’une classe puzzle, elle contient simplement une liste de 9 pièces dont les positions sont
1 2 3 4 5 6 7 8 9
et les orientations choisies dans l’ensemble { 0,90,180,270 }
Voir Résolution d’un puzzle.
on définit le puzzle à partir des informations contenues dans le répertoire data de ce module qui doit contenir :
9 images appelées
piece1.png
, …,piece0.png
un fichier
definition_puzzle_girafe.txt
contenant la définition de chacun des 4 bords de chacune des 9 pièces:HOBBBVHM HOBBBVHM HBBMBVHO HMBBBVHB BMBOHBHV HVBMBOHM BMBVHBHO HVHMBBBO BMHOHVBB
- __init__()#
on définit le puzzle à partir des informations contenues dans le répertoire data de ce module qui doit contenir :
9 images appelées
piece1.png
, …,piece0.png
un fichier
definition_puzzle_girafe.txt
contenant la définition de chacun des 4 bords de chacune des 9 pièces:HOBBBVHM HOBBBVHM HBBMBVHO HMBBBVHB BMBOHBHV HVBMBOHM BMBVHBHO HVHMBBBO BMHOHVBB
- __str__()#
ce qu’on doit afficher lorsqu’on exécute l’instruction print avec un objet de type
PuzzleGirafe
.
- angle_possible(p, display=False)#
retourne l’ensemble des angles possibles pour une pièce donnée
- ensemble_voisin(i)#
retourne les positions voisins de la position i
- load_images(pygame)#
charge les images pour une simulation graphique
- Paramètres:
pygame – module pygame
- meilleure_piece(free, pos)#
retourne la prochaine pièce à placer sur le puzzle, dans un premier temps, on peut prend la première qui vient, ensuite, on peut essayer un choix plus judicieux
- nb_place()#
retourne le nombre de places vides
- piece_position(pi)#
recherche la piece associée à la position pi
- pixel(position)#
retourne en fonction de la position (1 à 9) de la pièce sa position sur l’écran, soit deux coordonnées
- Renvoie:
tuple (x,y)
- solution(pos=1, screen=None, pygame=None, images=None, delay=200)#
Résoud le puzzle de façon récursive : on pose une pièce puis on résoud le puzzle restant (une pièce en moins, une case en moins).
- Paramètres:
pos – niveau de récursivité
screen – image pygame
pygame – module pygame
images – stores images in this list if not None
delay – delay between two tries
L’affichage pygame est optionnel.
- class ensae_teaching_cs.special.puzzle_girafe.PuzzleGirafeBord(definition)#
Bases :
object
Définition d’un bord ou côté d’une pièce, il possède :
partie : une partie de la girafe (haut ou bas)
une couleur : la couleur de cette partie, (orange, violet, bleu clair, bleu foncé)
- Paramètres:
definition – chaîne de caractères
definition est une chaîne de 2 caractères qui définit un bord, exemple :
HO
pour haut orangeBB
pour bas bleuBV
pour bas violetHM
pour haut mauve
- __init__(definition)#
- Paramètres:
definition – chaîne de caractères
definition est une chaîne de 2 caractères qui définit un bord, exemple :
HO
pour haut orangeBB
pour bas bleuBV
pour bas violetHM
pour haut mauve
- __str__()#
Cette méthode est appelée lorsqu’on exécute l’instruction print avec un objet de type
PuzzleGirafeBord
.
- compatible(bord)#
dit si deux bords sont compatibles, c’est à dire de la même couleur et de partie différente
- class ensae_teaching_cs.special.puzzle_girafe.PuzzleGirafePiece(name, definition, position, numero)#
Bases :
object
Définition d’une pièce du puzzle, celle-ci inclut :
bord : cette liste contient quatre objets de type Bord, cette liste ne changera plus
position : c’est la position de la pièce dans le puzzle, ce qui nous intéresse, c’est la position finale de la pièce dans le puzzle, cette information va donc bouger au fur et à mesure que nous allons essayer de résoudre le puzzle
orientation : de même que pour la position, une pièce peut être tournée sans changer de position, c’est le résultat final qui nous intèresse
pour l’affichage, on ajoute deux informations :
name : le nom de l’image de la pièce
image : c’est la représentation de l’image dans la mèmoire de l’ordinateur pour le module pygame
on définit la pièce
- Paramètres:
name – nom de l’image représentant la pièce
definition – chaîne de 8 caractères, c’est une suite de 4 x 2 caractères définissant chaque bord, voir la classe bord pour leur signification
position – c’est la position initiale de la pièce, on suppose que l’orientation est nulle pour commencer
numero – numéro de la pièce
à partir de ces informations, on construit :
image : c’est la représentation en mémoire de l’image de la pièce
bord : c’est une liste qui définit les 4 bords de la pièce
orientation : c’est l’orientation de la pièce, au début de la résolution, elle est nulle
- __init__(name, definition, position, numero)#
on définit la pièce
- Paramètres:
name – nom de l’image représentant la pièce
definition – chaîne de 8 caractères, c’est une suite de 4 x 2 caractères définissant chaque bord, voir la classe bord pour leur signification
position – c’est la position initiale de la pièce, on suppose que l’orientation est nulle pour commencer
numero – numéro de la pièce
à partir de ces informations, on construit :
image : c’est la représentation en mémoire de l’image de la pièce
bord : c’est une liste qui définit les 4 bords de la pièce
orientation : c’est l’orientation de la pièce, au début de la résolution, elle est nulle
- __str__()#
définition ce qu’on doit afficher lorsqu’on exécute l’instruction print avec un objet de type
PuzzleGirafePiece
.
- bord_angle(angle, orientation=None)#
retourne le bord connaissant l’orientation de la pièce, le bord demandé est celui correspondant à :
0 bord droit
90 bord haut
180 bord gauche
270 bord bas
- voisin_possible(p, a)#
détermine si la pièce self peut être voisine avec la pièce p tournée de l’angle a
- ensae_teaching_cs.special.puzzle_girafe.display_puzzle_girafe(self, screen, petite=False, pygame=None)#
affiche les pièces sur l’écran, en plus petit pour celles qui ne sont pas encore placées
- ensae_teaching_cs.special.puzzle_girafe.display_puzzle_girafe_piece(self, screen, position, pygame)#
affiche la pièce en tenant compte de sa position et de son orientation
- ensae_teaching_cs.special.puzzle_girafe.pygame_simulation(pygame, first_click=False, folder=None, size=(750, 750), fLOG=<function fLOG>, delay=200, flags=0)#
Simulation graphique. Illuste la résolution du puzzle
- Paramètres:
pygame – module pygame
first_click – attend la pression d’un clic de souris avant de commencer
folder – répertoire où stocker les images de la simulation
size – taille de l’écran
delay – delay between two tries
flags – see pygame.display.set_mode
fLOG – logging function
- Renvoie:
La simulation ressemble à ceci :
Pour lancer la simulation:
from ensae_teaching_cs.special.puzzle_girafe import pygame_simulation import pygame pygame_simulation(pygame)
Voir Résolution d’un puzzle.