Source code for jeu2048.subpackages.move_grid

"""
Module permettant d'effectuer les mouvements du plateau
"""

[docs]def move_ligne(ligne): """ Déplacement d'un liste selon les règles du 2048 :param list ligne: Ligne du plateau :return: Ligne déplacée vers la gauche en sommant suivant les règles :rtype: list """ lignep = [] lignepp = [] for i in ligne: if i != 0: lignep.append(i) dejavu = False for indx, i in enumerate(lignep): if dejavu is True: dejavu = False continue if dejavu is False: if indx < len(lignep)-1: if lignep[indx] == lignep[indx+1]: lignepp.append(lignep[indx]*2) dejavu = True else: lignepp.append(lignep[indx]) else: lignepp.append(lignep[indx]) while len(lignepp) < len(ligne): lignepp.append(0) return lignepp
[docs]def colonne(matrix, i): """ Conversion d'un colonne en une liste :param list matrix: Matrice 2D :param int i: Indice de la colonne :return: Liste des élèments de la ième colonne :rtype: list """ return [ligne[i] for ligne in matrix]
[docs]def move_grid(grid, mvmt): """ Déplacement du plateau dans la direction choisie :param list grid: Matrice 2D :param str mvmt: Mouvement à effecteur :return: Plateau déplacé selon la direction choisie :rtype: list[list[int]] """ gridp = [] if mvmt == 'd': for i in grid: gridp.append(list(reversed(move_ligne(list(reversed(i)))))) if mvmt == 'q': for i in grid: gridp.append(move_ligne(i)) if mvmt == 'z': matrice = [] for i in range(len(grid[0])): matrice.append(move_ligne(colonne(grid,i))) for i in range(len(grid[0])): gridp.append(colonne(matrice,i)) if mvmt == 's': matrice = [] for i in range(len(grid[0])): matrice.append(list(reversed(move_ligne(list(reversed(colonne(grid,i))))))) for i in range(len(grid[0])): gridp.append(colonne(matrice,i)) return gridp