예제 #1
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))
예제 #2
0
def test_avanzar_consolida_la_superficie_al_llegar_al_fondo():
    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

    # Debe haber superficie en todos los puntos que ocupaba la pieza actual antes de
    # consolidarse.
    superficie = []
    for py in range(ALTO_JUEGO):
        for px in range(ANCHO_JUEGO):
            if tetris.hay_superficie(juego, px, py):
                superficie.append((px, py))

    return sorted(superficie) == sorted(pieza_actual)
예제 #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_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))
예제 #7
0
def test_mover_l_contra_pared_izquierda():
    pieza_inicial = tetris.generar_pieza(tetris.L)
    juego = tetris.crear_juego(pieza_inicial)

    for _ in range(ANCHO_JUEGO + 5):
        juego = tetris.mover(juego, IZQUIERDA)

    return sorted(pieza_inicial) == sorted(tetris.pieza_actual(juego))
예제 #8
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))
def dibujar_pieza(juego):
    """
    Recibe el juego y dibuja la pieza actual
    """
    ancho, alto = tetris.dimensiones(juego)
    proporcio = alto / ancho
    grilla_ancho = RES / proporcio
    lado_bloque = grilla_ancho / ancho
    posiciones = tetris.pieza_actual(juego)
    for posicion in posiciones:
        x, y = posicion
        gamelib.draw_rectangle(
            x * lado_bloque,
            y * lado_bloque,
            (x + 1) * lado_bloque,
            (y + 1) * lado_bloque,
            fill="red",
        )
예제 #10
0
def dibujar_pieza(juego):
  '''Se dibujara cada pieza del tetris'''
  pieza_actual = tetris.pieza_actual(juego)
  for x, y in pieza_actual:
      gamelib.draw_rectangle(x*66, y*50, (x+1)*66, (y+1)*50, outline='white', fill='red')