Coding for KidsCoding for Kids
Niveles CreativosDesafíosGuía del Maestro
Votar por funciones
Curso Avanzado de Desarrollo en Python
Capítulo
>
Nivel

Clases Avanzadas
Sobrecarga de operadores

Objetivo

Cuantifica la cantidad de vino que se está clarificando usando vectores y sobrecarga de operadores.

Después de prensar el vino, es necesario filtrarlo y clarificarlo; hay varios barriles en proceso de filtración y gran parte de ellos deben ser enjuagados. Es importante contabilizar la cantidad de vino producido para que los barriles puedan ser sellados y envejecidos.

Para hacer esto necesitas crear vectores y sumarlos; estos son similares a las listas, pero no son tan flexibles y, a la vez, son más eficientes en memoria. Generalmente se utilizan para manejar coordenadas; en este caso los usaremos como variables que contienen más de un valor. La suma de los vectores se realiza mediante la Sobrecarga de Operadores, la cual extiende la funcionalidad de los objetos de clase para poder usar operadores con ellos, tal como se haría con valores normales.

Para empezar, camina y recoge las latas de agua metálicas ubicadas en la parte superior de la sala; estas se usarán para ayudar a enjuagar el vino que se filtra en los barriles. Una vez recogidas, dirígete hacia la marca X oscura sobre la alfombra roja, enfrenta el barril y comienza a vectorizar el contenido de cada uno.

Las marcas X están dispuestas en conjuntos de tres (3) para cada alfombra de color: una marca X dorada, una X clara y una X oscura. En todas las marcas X oscuras y claras, utiliza la función water() para ayudar a enjuagar los barriles. Además, en todas las marcas X oscuras y claras, utiliza la función read() para identificar la cantidad de vino que se está procesando en esa columna de barriles. En la marca X dorada, utiliza la función write() para anotar el total de las cantidades juntas.

En el editor de código hay una clase llamada vector; esta se utiliza para que puedas no solo crear un vector, sino también sumarlos. Crea objetos vector para almacenar los datos identificados en las marcas X claras y oscuras. Por ejemplo, en las alfombras rojas se está filtrando vino tinto:

# Create object using data from dark X mark red_wine_dark = vector(345, 272) # Create object using data from light X mark red_wine_light = vector(248, 432) # Add together vectors for totals red_wine_total = red_wine_dark + red_wine_light

En un vector, la primera posición se llama x y la segunda posición es y, siendo la fórmula la siguiente: object_name = vector(x,y). Esto es relevante para poblar los vectores con la información adquirida mediante la función read().

En las marcas X doradas, utiliza la función write() para anotar el total de cada conjunto de vectores. Por ejemplo, en el caso de las marcas X de la alfombra roja se escribe de la siguiente manera:

await player.write( "There is a total of %s pounds on the left barrels and %s pounds on the right barrels" % (red_wine_total.x, red_wine_total.y)

Recuerda agregar .x y .y al final del total para identificar los valores de cada vector.

Para cada conjunto de alfombras de colores se filtra un tipo diferente de vino. En la mencionada alfombra roja, se filtra red_wine; en las alfombras amarillas, se filtra sparkling_wine; en las alfombras verdes, se filtra white_wine; y en las alfombras naranjas, se filtra orange_wine.

Una vez que todas las marcas X claras y oscuras hayan sido enjuagadas con la función water() y todos los signos en las marcas X doradas tengan anotados los totales, habrás completado el nivel.

Libro de Código