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_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)
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_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_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))
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", )
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')