module special.puzzle_2

Inheritance diagram of ensae_teaching_cs.special.puzzle_2

Short summary

module ensae_teaching_cs.special.puzzle_2

Fonctions, classes pour résoudre un puzzle à 8 pièces disposé de façon non conventionnelle. Voir Résolution d’un autre puzzle.

source on GitHub

Classes

class

truncated documentation

Puzzle2

Définition d’une classe puzzle, elle contient simplement une liste de 9 pièces dont les positions sont:

Puzzle2Bord

Définition d’un bord ou côté d’une pièce, il possède deux couleurs.

Puzzle2Piece

Définition d’une pièce du puzzle, celle-ci inclut :

Functions

function

truncated documentation

display_puzzle_2

Affiche les pièces sur l’écran, en plus petit pour celles qui ne sont pas encore placées.

display_puzzle_2_piece

Affiche la pièce en tenant compte de sa position et de son orientation.

pygame_simulation

Simulation graphique. Illuste la résolution du puzzle

Methods

method

truncated documentation

__init__

On définit le puzzle à partir des informations contenues dans le répertoire data de ce module qui doit contenir …

__init__

__init__

On définit la pièce:

__str__

Ce qu’on doit afficher lorsqu’on exécute l’instruction print avec un objet de type Puzzle2.

__str__

Cette méthode est appelée lorsqu’on exécute l’instruction print avec un objet de type Puzzle2Bord.

__str__

Définition ce qu’on doit afficher lorsqu’on exécute l’instruction print avec un objet de type Puzzle2Piece. …

angle_possible

Retourne l’ensemble des angles possibles pour une pièce donnée.

bord_angle

Retourne le bord connaissant l’orientation de la pièce, le bord demandé est celui correspondant à :

compatible

Dit si deux bords sont compatibles, ils ont les mêmes couleurs mais inversées.

ensemble_voisin

Retourne les positions voisins de la position i. Retourne toujours quatre voisins, 0 si la case est hors-jeu. …

load_image

Charge l’image pour une simulation graphique.

load_images

Charge les images pour une simulation graphique.

meilleure_piece

Retourne la prochaine pièce à placer sur le puzzle, dans un premier temps, on peut prend la première qui vient, …

nb_place

Retourne le nombre de places vides.

piece_position

Recherche la piece associée à la position pi.

pixel

Retourne en fonction de la position (1 à 8) de la pièce sa position sur l’écran, soit deux coordonnées.

solution

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, …

voisin_possible

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 à 8 pièces disposé de façon non conventionnelle. Voir Résolution d’un autre puzzle.

source on GitHub

class ensae_teaching_cs.special.puzzle_2.Puzzle2

Bases : object

Définition d’une classe puzzle, elle contient simplement une liste de 9 pièces dont les positions sont:

  5
6 1 2
  4 3 7
    8

et les orientations choisies dans l’ensemble { 0, 90, 180, 270 }

Voir Résolution d’un autre puzzle.

source on GitHub

On définit le puzzle à partir des informations contenues dans le répertoire data de ce module qui doit contenir :

  • 8 images appelées piece21.png, …, piece28.png

  • un fichier definition_puzzle_girafe.txt contenant la définition de chacun des 4 bords de chacune des 9 pièces :

GBYR
BRYG
BGYR
YRGB
YBRG
BGYR
BYGR
RYBG

source on GitHub

__init__()

On définit le puzzle à partir des informations contenues dans le répertoire data de ce module qui doit contenir :

  • 8 images appelées piece21.png, …, piece28.png

  • un fichier definition_puzzle_girafe.txt contenant la définition de chacun des 4 bords de chacune des 9 pièces :

GBYR
BRYG
BGYR
YRGB
YBRG
BGYR
BYGR
RYBG

source on GitHub

__str__()

Ce qu’on doit afficher lorsqu’on exécute l’instruction print avec un objet de type Puzzle2.

source on GitHub

angle_possible(p, display=False)

Retourne l’ensemble des angles possibles pour une pièce donnée.

source on GitHub

ensemble_voisin(i)

Retourne les positions voisins de la position i. Retourne toujours quatre voisins, 0 si la case est hors-jeu.

  5
6 1 2
  4 3 7
    8
::

1

0 3

2

source on GitHub

load_images(pygame)

Charge les images pour une simulation graphique.

Paramètres

pygame – module pygame

source on GitHub

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.

source on GitHub

nb_place()

Retourne le nombre de places vides.

source on GitHub

piece_position(pi)

Recherche la piece associée à la position pi.

source on GitHub

pixel(position)

Retourne en fonction de la position (1 à 8) de la pièce sa position sur l’écran, soit deux coordonnées.

Renvoie

tuple(x,y)

  5
6 1 2
  4 3 7
    8

source on GitHub

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.

source on GitHub

voisin_possible(piece, p, a)

Détermine si la pièce self peut être voisine avec la pièce p tournée de l’angle a.

source on GitHub

class ensae_teaching_cs.special.puzzle_2.Puzzle2Bord(definition)

Bases : object

Définition d’un bord ou côté d’une pièce, il possède deux couleurs.

source on GitHub

Paramètres

definition – chaîne de caractères

definition est une chaîne de 2 caractères qui définit un bord, exemple :

  • RG for rouge vert (red, green)

Les quatre couleurs sont R (red, rouge), Y (yellow, jaune), G (green, vert), B (blue, bleu).

source on GitHub

__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 :

  • RG for rouge vert (red, green)

Les quatre couleurs sont R (red, rouge), Y (yellow, jaune), G (green, vert), B (blue, bleu).

source on GitHub

__str__()

Cette méthode est appelée lorsqu’on exécute l’instruction print avec un objet de type Puzzle2Bord.

source on GitHub

compatible(bord)

Dit si deux bords sont compatibles, ils ont les mêmes couleurs mais inversées.

source on GitHub

class ensae_teaching_cs.special.puzzle_2.Puzzle2Piece(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

source on GitHub

On définit la pièce:

Paramètres
  • name – nom de l’image représentant la pièce

  • definition – chaîne de 4 caractères indiquant les quatre couleurs au quatre angles

  • 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

A 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

source on GitHub

__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 4 caractères indiquant les quatre couleurs au quatre angles

  • 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

A 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

source on GitHub

__str__()

Définition ce qu’on doit afficher lorsqu’on exécute l’instruction print avec un objet de type Puzzle2Piece.

source on GitHub

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

source on GitHub

load_image(pygame)

Charge l’image pour une simulation graphique.

Paramètres

pygame – module pygame

source on GitHub

ensae_teaching_cs.special.puzzle_2.display_puzzle_2(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.

source on GitHub

ensae_teaching_cs.special.puzzle_2.display_puzzle_2_piece(self, screen, position, pygame)

Affiche la pièce en tenant compte de sa position et de son orientation.

source on GitHub

ensae_teaching_cs.special.puzzle_2.pygame_simulation(pygame, first_click=False, folder=None, size=(700, 700), 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

Puzzle2

La simulation ressemble à ceci :

Pour lancer la simulation :

from ensae_teaching_cs.special.puzzle_2 import pygame_simulation
import pygame
pygame_simulation(pygame)

Voir Résolution d’un puzzle.

source on GitHub