Ce projet est inspiré du jeu des lemmings. Dans ce jeu, les lemmings marchent dans une grotte représentée par une grille à deux dimensions dont chaque case est soit un mur soit un espace vide, un espace vide pouvant contenir au maximum un seul lemming à un instant donné. Les lemmings apparaissent l'un après l'autre à une position de départ et disparaissent lorsqu'ils atteignent une case de sortie. Chaque lemming a une coordonnée verticale et une coordonnée horizontale désignant la case dans laquelle il se trouve, ainsi qu'une direction( gauche ou droite). Les lemmings se déplacent à tour de rôle, toujours dans l'ordre correspondant à leur introduction dans le jeu, de la manière suivante :
L'objectif est de voir évoluer une colonie de lemmings en utilisant le paradigme de la programmation objet.Pour cela , trois classes seront créées. Lemming
pour les lemmings , Case
pour les cases de la grotte et Jeu
pour les données globales et le déroulement du jeu.
Jeu
contient:grotte
contenant un tableau à deux dimensions de cases (une liste de listes).lemmings
contenant un tableau des lemmings actuellement en jeu (une liste).__init()__
: la méthode constructeur initialise la grotte à partir d'une carte donnée par un fichier texte dans lequel le caractère #
représente un mur et le caractère O
la sortie.Les lemmings apparaissent dans une entrée qui est une case vide.affiche(self)
: affiche la carte avec les positions et direction de tous les lemmings en jeu.tour(self)
: fait agir chaque lemming une fois et affiche le nouvel état du jeu.demarre(self)
: lance une boucle infinie attendant des commandes de l'utilisateur :1
pour ajouter un lemming à l'entrée (si c'est possible)q
pour quitter.La classe Lemming
contient :
ligne
et colonne
indiquant repsectivement la ligne et la colonne ou se trouve le lemming.direction
indiquant la direction du lemming : $1$ pour la droite et $-1$ pour la gauche.jeu
pointant sur l'instance de la classe Jeu
pour laquelle le lemming a été créé, pour pouvoir accéder au terrain et à la liste des lemmings.__init(self)__
: la méthode constructeur initialise les attributs précédents.__str(self)__
renvoie:>
si le lemming se dirige vers la droite.<
si le lemming se dirige vers la gauche.action(self)
: déplace ou retourne le lemming.sort(self)
: retire le lemming du jeu.La classe Case
contient :
terrain
contenant le caractère représentant la case( mur, vide ou sortie).lemming
contenant l'éventuel lemming présent dans cette case et None
si la case est libre.__init(self)
: la méthode constructeur initialise les attributs.__str(self)
renvoie le caractère à afficher pour représenter cette case ou son éventuel occupant.libre(self)
renvoie True
si la case peut recevoir un lemming (elle n'est ni un mur, ni occupée).depart(self)
retire le lemming present de la casearrivee(self, lem)
:place le lemming lem
sur la case ou le fait sortir du jeu si la case est une sortie.< A gauche : Le premier lemming entre en jeu
dans la grotte par la case vide du haut
A droite > : Plusieurs lemmings en jeu
math
et random
.Le projet est collectif maisle rendu est individuel. Vous devrez rendre un dossier nommé Lemmings_NOM
ou NOM
est votre nom de famille, contenant:
Un sous dossier 'jeu' contenant :
lemmings.py
avec le code du jeuUn fichier au format .pdf de 5 pages maximum contenant un rapport avec :