from pynput import keyboard
import time
from random import randint
###########################################################################################
class Tetris:
# Tous les schémas de tetrominos
TETROS = [[(0,-1), (0,0), (0,1), (0,2)],
[(0,-1), (0,0), (0,1), (1,0)],
[(0,-1), (0,0), (1,0), (1,1)],
[(0,1), (0,0), (1,-1), (1,0)],
[(0,-2), (0,-1), (0,0), (1,0)],
[(0,1), (0,0), (1,0), (1,1)]
]
def __init__(self):
...
def descendre_tetro(self):
""" Descend le Tetromino d'une ligne vers le bas
si ce n'est pas possible, le tetromino est posé
"""
...
def gerer_temps(self):
""" Mise à jourc des attributs liés au temps :
chrono, delai
"""
...
def decaler_tetro(self, sens):
""" Décale lattéralement le Tetromino courant
d'une distance égale à sens
(si impossible, ne fait rien)
"""
...
def ajouter_tetro(self):
""" Instancie un nouveau Tetromino
et le place en heut de la grille (si possible)
"""
...
def poser_tetro(self):
""" Pose le Tetromino lorsqu'il ne peut plus descendre
et lancement de la vérification de lignes
"""
...
def on_key_press(self, key):
""" Méthode appelée quand une touche est pressée
"""
...
def afficher(self):
""" Affiche le jeu :
score
grille
"""
print(f"Score : {self.score}")
print(self.grille)
###########################################################################################
class Tetromino:
def __init__(self, schema, signe):
...
def __str__(self):
return chr(self.signe)
def tourner(self):
...
###########################################################################################
class Grille:
w = 10
h = 10
def __init__(self):
self.grille = ...
def __repr__(self):
...
def est_possible(self, tetro, pos):
""" Renvoie True si le Tetromino tetro
peut être placé à la position pos
"""
...
def placer_tetro(self, tetro, pos):
""" Place le Tétromino tetro
à la position pos
"""
...
def retirer_tetro(self, tetro, pos):
""" Retire complètement le Tétromino tetro
situé à la position pos
"""
...
def verif_lignes(self, score = 0):
""" Vérifie la présence de lignes complètes
les supprime (avec décalage de l'ensemble vers le bas)
et renvoie le nombre de lignes supprimées
(fonction récursive)
"""
...
###########################################################################################
if __name__ == "__main__":
T = Tetris()
while not T.game_over:
T.descendre_tetro()
T.gerer_temps()
time.sleep(T.delai)