Cours avancé de développement Python
Chapitre
>
Niveau
Cours avancés
Surcharge d'opérateurs
Objectif
Déterminer la quantité de vin clarifié en utilisant des vecteurs et la surcharge d'opérateurs.
Après la pression du raisin, le vin doit être filtré et clarifié. Plusieurs fûts sont en cours de filtration et l'ensemble doit être rincé. Il est important de comptabiliser la quantité de vin produite afin de pouvoir sceller et faire vieillir les fûts.
Pour ce faire, vous devez créer des vecteurs et les additionner. Ils sont similaires aux listes, mais moins flexibles et plus efficaces en termes de mémoire. Ils sont généralement utilisés pour manipuler des coordonnées ; dans ce cas, nous les utiliserons comme des variables contenant plus d'une valeur. L'addition des vecteurs se fait grâce à la surcharge d'opérateurs, qui étend la fonctionnalité des objets de classe pour leur permettre d'utiliser des opérateurs comme sur des valeurs normales.
Pour commencer, marchez et récupérez les boîtes d'eau en métal situées en haut de la pièce, elles seront utilisées pour aider à rincer le vin filtré dans les fûts. Une fois collectées, dirigez-vous vers la marque en X sombre sur le tapis rouge, faites face au fût et commencez à vectoriser le contenu de chaque fût.
Les marques en X sont disposées par groupes de trois (3) pour chaque couleur de tapis, une marque en X dorée, une en X claire et une en X sombre. Sur toutes les marques en X sombres et claires, utilisez la fonction water() pour aider à rincer les fûts. Toujours sur toutes les marques en X sombres et claires, utilisez la fonction read() pour identifier la quantité de vin en cours de traitement dans cette rangée de fûts. Sur la marque en X dorée, utilisez la fonction write() pour noter le total des quantités ensemble.
Dans l'éditeur de code, il existe une classe nommée vector, qui vous permet non seulement de créer un vecteur, mais aussi de les additionner. Créez des objets vector pour stocker les données identifiées sur les marques en X claires et sombres. Par exemple, pour les tapis rouges, du vin rouge est filtré :
# 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
Dans un vecteur, la première position s'appelle x et la deuxième y, la formule est la suivante : object_name = vector(x,y). Ceci est important pour remplir les vecteurs avec les informations acquises via la fonction read().
Sur les marques en X dorées, utilisez la fonction write() afin d'inscrire le total pour chaque ensemble de vecteurs. Par exemple, dans le cas des marques en X sur le tapis rouge, il est écrit de la manière suivante :
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)
N'oubliez pas d'ajouter .x et .y à la fin du total pour identifier les valeurs de chaque vecteur.
Pour chaque ensemble de tapis colorés, un type de vin différent est filtré. Pour le tapis red mentionné précédemment, c'est le red_wine qui est filtré ; sur les tapis yellow, c'est le sparkling_wine qui est filtré ; sur les tapis green, c'est le white_wine qui est filtré ; et sur les tapis orange, c'est le orange_wine qui est filtré.
Une fois que toutes les marques en X claires et sombres auront été rincées avec la fonction water() et que tous les panneaux sur les marques en X dorées auront les totaux notés, vous aurez terminé le niveau.