def test_pieza_inicial_esta_arriba_en_el_medio_al_iniciar(): pieza_inicial = tetris.generar_pieza(pieza=tetris.T) juego = tetris.crear_juego(pieza_inicial) pieza_centrada = tetris.trasladar_pieza(pieza_inicial, ANCHO_JUEGO // 2, 0) return sorted(pieza_centrada) == sorted(tetris.pieza_actual(juego))
def test_avanzar_cambia_pieza_actual_al_consolidar_superficie(): siguiente_pieza = tetris.generar_pieza(pieza=tetris.T) juego = tetris.crear_juego(tetris.generar_pieza(tetris.L)) llego_al_piso = False # Avanzar n veces hasta que la pieza L esté justo antes de tocar el piso for _ in range(ALTO_JUEGO): pieza_actual = tetris.pieza_actual(juego) if any(py == ALTO_JUEGO - 1 for _, py in pieza_actual): llego_al_piso = True break juego, cambiar_pieza = tetris.avanzar(juego, siguiente_pieza) if cambiar_pieza == True: # Si se consolidó antes hay un bug. return False if not llego_al_piso: return False # Iteramos ALTO_JUEGO veces y la pieza nunca llegó al piso pieza_actual = tetris.pieza_actual(juego) juego, cambiar_pieza = tetris.avanzar(juego, siguiente_pieza) if not cambiar_pieza: return False # La pieza tenía que consolidarse y no lo hizo pieza_centrada = tetris.trasladar_pieza(siguiente_pieza, ANCHO_JUEGO // 2, 0) return sorted(pieza_centrada) == sorted(tetris.pieza_actual(juego))
def test_mover_pieza_i_a_izquierda(): juego = tetris.crear_juego(tetris.generar_pieza(pieza=tetris.I)) pieza_actual = tetris.pieza_actual(juego) juego = tetris.mover(juego, IZQUIERDA) pieza_trasladada = tetris.trasladar_pieza(pieza_actual, IZQUIERDA, 0) return sorted(pieza_trasladada) == sorted(tetris.pieza_actual(juego))
def test_mover_pieza_s_a_derecha(): juego = tetris.crear_juego(tetris.generar_pieza(pieza=tetris.S)) pieza_actual = tetris.pieza_actual(juego) juego = tetris.mover(juego, DERECHA) pieza_trasladada = tetris.trasladar_pieza(pieza_actual, DERECHA, 0) return sorted(pieza_trasladada) == sorted(tetris.pieza_actual(juego))
def test_avanzar_baja_la_pieza_una_posicion(): siguiente_pieza = tetris.generar_pieza(pieza=tetris.T) juego = tetris.crear_juego(tetris.generar_pieza(tetris.L)) pieza_actual = tetris.pieza_actual(juego) juego, _ = tetris.avanzar(juego, siguiente_pieza) pieza_trasladada = tetris.trasladar_pieza(pieza_actual, 0, 1) return sorted(pieza_trasladada) == sorted(tetris.pieza_actual(juego))
def test_eliminar_lineas_baja_las_lineas_superiores(): pieza_i = tetris.generar_pieza(pieza=tetris.I) juego = tetris.crear_juego(pieza_i) # Generar esta superficie: # T # T T T # I I I I I I I # I I I I I I I # I I I I I I I # I I I I I I I # # Y verificar que al poner la última I queda así: # T # T T T pieza_t = tetris.generar_pieza(pieza=tetris.T) juego = _ubicar_piezas_I(juego, -4, -1, pieza_t) if not juego: return False # Ubicar la T for _ in range(4): juego = tetris.mover(juego, IZQUIERDA) # Bajar la T hasta consolidarla juego, cambiar_pieza = tetris.avanzar(juego, pieza_i) while not cambiar_pieza and not tetris.terminado(juego): juego, cambiar_pieza = tetris.avanzar(juego, pieza_i) if tetris.terminado(juego): return False # Ubicar el resto de las I juego = _ubicar_piezas_I(juego, -1, 5, pieza_i) if not juego: return False # Revisar que no haya superficie en ningún lado excepto en # donde está la T ancho, alto = tetris.dimensiones(juego) pieza_t = tetris.generar_pieza(pieza=tetris.T) pieza_t = tetris.trasladar_pieza(pieza_t, 0, alto - 2) for x in range(ancho): for y in range(alto): if tetris.hay_superficie(juego, x, y) and not (x, y) in pieza_t: print(f"f en {(x, y)}") return False for x, y in pieza_t: if not tetris.hay_superficie(juego, x, y): print("no pieza t") return False return True
def test_mover_l_contra_pared_derecha(): pieza_inicial = tetris.generar_pieza(tetris.L) juego = tetris.crear_juego(pieza_inicial) for _ in range(ANCHO_JUEGO + 5): juego = tetris.mover(juego, DERECHA) pieza_trasladada = tetris.trasladar_pieza(pieza_inicial, ANCHO_JUEGO - 2, 0) return sorted(pieza_trasladada) == sorted(tetris.pieza_actual(juego))
def test_trasladar_pieza(): pieza_inicial = ((0, 0), (1, 1)) pieza_trasladada = tetris.trasladar_pieza(pieza_inicial, 2, 2) return sorted(pieza_trasladada) == sorted(((2, 2), (3, 3)))
def test_trasladar_pieza_al_0_0(): pieza_inicial = tetris.generar_pieza(tetris.T) pieza_trasladada = tetris.trasladar_pieza(pieza_inicial, 0, 0) return sorted(pieza_trasladada) == sorted(pieza_inicial)