Source code for jeu2048.game

"""
Création de la classe D2048 qui générèe une partie du jeu 2048
"""

from .subpackages import grid_setup
from .subpackages import move_grid

[docs]class D2048: """ Classe générant le jeu 2048 sur une grille de taille donnée """ def __init__(self, taille): self.taille = taille self.grid = grid_setup.init_grid(self.taille) self.mvmt = "" for _ in range(self.taille-1): self.grid = grid_setup.random_grid(self.grid) def __str__(self): return self.jouer()
[docs] def demande_mvmt(self, texte): """ Demande du mouvement à effectuer par le joueur selon les possibilités :param list texte: Liste contenant les coups possibles :return: Mouvement choisie par le joueur :rtype: str """ display_texte = "" for i in texte: display_texte += i + " " display_texte += ":" input_user = False while input_user is False: mvmt = input(display_texte) if mvmt in texte: input_user = True else: mvmt = print("Entrez une commande valide") return mvmt
[docs] def prevision(self, grid): """ Prévision des coups possibles que le joueur peut effectuer :param list grid: Matrice 2D :return: Mouvements possibles sinon 'perdu' :rtype: list ou str """ mvmt = ['q','d','s','z'] if move_grid.move_grid(grid,'q') == grid: mvmt.remove('q') if move_grid.move_grid(grid,'d') == grid: mvmt.remove('d') if move_grid.move_grid(grid,'s') == grid: mvmt.remove('s') if move_grid.move_grid(grid,'z') == grid: mvmt.remove('z') if not mvmt: return 'perdu' return mvmt
[docs] def endgame(self, grid): """ Vérification de la condition de victoire :param list grid: Matrice 2D :return: Victoire sinon string vide :rtype: str """ for i in grid: if 2048 in i: return 'victoire' return ''
[docs] def jouer(self): """ Déroulement d'une partie """ perdu = False victoire = False while perdu is False and victoire is False: grid_setup.show_grid(self.grid) mvmt_possible = self.prevision(self.grid) if mvmt_possible =='perdu': perdu = True continue self.mvmt = self.demande_mvmt(mvmt_possible) self.grid = move_grid.move_grid(self.grid, self.mvmt) if self.endgame(self.grid) == 'victoire': victoire = True grid_setup.show_grid(self.grid) continue self.grid = grid_setup.random_grid(self.grid) if perdu is True: color = f"{grid_setup.Couleurs.red}{grid_setup.Couleurs.bold}" return color + f"PERDU! {grid_setup.Couleurs.white} \n Partie terminée" if victoire is True: color = f"{grid_setup.Couleurs.blue}{grid_setup.Couleurs.bold}" return color + f"GAGNE! {grid_setup.Couleurs.white} \n Partie terminée"