50. Rotando en Tetris

Crea una función que simule la rotación de una pieza de Tetris (un "tetromino") dentro de una matriz (el tablero de juego).

La función debe aceptar una matriz que representa el tetromino (por ejemplo, 3x3 o 4x4, con ’X’ para la pieza y ’ ’ para vacío) y un sentido de rotación (’derecha’ o ’izquierda’). Devolverá una nueva matriz con el tetromino rotado.

def rotar_tetromino(tetromino: list[list[str]], sentido: str) -> list[list[str]]:
    # Tu código aquí
    pass

# Ejemplo de tetromino 'I' (4x4)
tetromino_I_horizontal = [
    [' ', ' ', ' ', ' '],
    ['X', 'X', 'X', 'X'],
    [' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ']
]

# Rotar a la derecha
# rotar_tetromino(tetromino_I_horizontal, "derecha")
# Resultado esperado (tetromino 'I' vertical):
# [
#  [' ', 'X', ' ', ' '],
#  [' ', 'X', ' ', ' '],
#  [' ', 'X', ' ', ' '],
#  [' ', 'X', ' ', ' ']
# ]

# Ejemplo de tetromino 'L' (3x3)
tetromino_L = [
    ['X', ' ', ' '],
    ['X', ' ', ' '],
    ['X', 'X', ' ']
]
# rotar_tetromino(tetromino_L, "derecha")
# Resultado esperado:
# [
#  ['X', 'X', 'X'],
#  ['X', ' ', ' '],
#  [' ', ' ', ' ']
# ]

Ratoncito

Implementa la rotación de una pieza cuadrada simple (ej. 3x3) en sentido horario.

Dragón

Implementa la rotación para todos los tipos de tetrominos estándar (I, O, T, S, Z, J, L) y en ambos sentidos (horario y antihorario). Considera los puntos de pivote de rotación para cada tipo de pieza y el "wall kick" (ajuste de la pieza si choca con una pared o con otras piezas al rotar) si te sientes ambicioso (este último es un reto considerable).

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Will you buy me a coffee?

Visitors in real time

You are alone: 🐱