Coding for KidsCoding for Kids
Creatieve LevelsUitdagingenLerarengids
Stem op functies
Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau

Gevorderde klassen
Operator overbelasting

Doelstelling

Tel hoeveel wijn wordt gezuiverd door gebruik te maken van vectoren en Operator Overloading.

Nadat de wijn is geperst moet deze gefilterd en gezuiverd worden, er worden meerdere vaten gefilterd en de gehele lading moet worden doorgespoeld. Het is belangrijk om bij te houden hoeveel wijn er wordt geproduceerd zodat de vaten verzegeld en gerijpt kunnen worden.

Om dit te doen moet je vectoren maken en samenvoegen. Deze lijken op lijsten, maar zijn minder flexibel en tegelijkertijd geheugen efficiënter. Ze worden meestal gebruikt voor het verwerken van coördinaten; in dit geval gebruiken we ze als variabelen die meer dan één waarde bevatten. Het samenvoegen van de vectoren gebeurt door gebruik te maken van Operator Overloading, waardoor de functionaliteit van klasse-objecten wordt uitgebreid zodat je operatoren met hen kunt gebruiken, net zoals met gewone waarden.

Begin met het lopen en verzamelen van de metalen watertins die zich bovenaan de kamer bevinden; deze worden gebruikt om te helpen de wijn door te spoelen die in de vaten wordt gefilterd. Zodra je ze hebt verzameld, loop naar het donkere X-teken op het rode tapijt, richt je op het vat en begin met het vectoriseren van de inhoud van elk vat.

De X-tekens zijn gerangschikt in sets van drie (3) voor elk gekleurd tapijt: een goud X-teken, een licht X-teken en een donker X-teken. Op alle donkere en lichte X-tekens gebruik je de water() functie om de vaten door te spoelen. Ook op alle donkere en lichte X-tekens gebruik je de read() functie om vast te stellen hoeveel wijn in die kolom vaten wordt verwerkt. Op het gouden X-teken gebruik je de write() functie om de totalen samen op te schrijven.

In de code-editor is er een klasse genaamd vector, die je niet alleen toestaat om een vector aan te maken, maar ook om ze samen te voegen. Maak vector objecten aan om de gegevens op te slaan die zijn vastgesteld op de lichte en donkere X-tekens. Bijvoorbeeld, op de rode tapijten wordt rode wijn gefilterd:

# 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

In een vector wordt de eerste positie x genoemd en de tweede positie y, de formule is als volgt: object_name = vector(x,y). Dit is relevant voor het vullen van de vectoren met de informatie verkregen via de read() functie.

Op de gouden X-tekens gebruik je de write() functie om het totaal voor elke set vectoren op te schrijven. Bijvoorbeeld, in het geval van de rode tapijt X-tekens wordt het als volgt geschreven:

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)

Vergeet niet om .x en .y toe te voegen aan het einde van het totaal om de waarden van elke vector te identificeren.

Voor elke set gekleurde tapijten wordt een ander type wijn gefilterd. Op het eerder genoemde red tapijt wordt red_wine gefilterd; op de yellow tapijten wordt sparkling_wine gefilterd; op de green tapijten wordt white_wine gefilterd; en op de orange tapijten wordt orange_wine gefilterd.

Zodra alle lichte en donkere X-tekens zijn doorgespoeld met de water() functie en alle totalen op de gouden X-tekens zijn genoteerd, heb je het level voltooid.

Codeboek