コード例 #1
0
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))
コード例 #2
0
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))
コード例 #3
0
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))
コード例 #4
0
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))
コード例 #5
0
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))
コード例 #6
0
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
コード例 #7
0
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))
コード例 #8
0
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)))
コード例 #9
0
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)