Coding for KidsCoding for Kids
Kreative NiveauerUdfordringerLærervejledning
Stem på funktioner
Avanceret Python Udviklingskursus
Kapitel
>
Niveau

Avancerede klasser
Operator overbelastning

Mål

Beregn, hvor meget vin der bliver klaret ved at bruge vektorer og operator overloading.

Efter at vinen er presset, skal den filtreres og klares. Der er flere fade under filteret, og de skal skylles grundigt. Det er vigtigt at registrere, hvor meget vin der produceres, så fadene kan forsegles og lagres.

For at gøre dette skal du oprette vektorer og lægge dem sammen. Disse ligner lister, men er ikke så fleksible, selvom de er mere hukommelseseffektive. De bruges typisk til håndtering af koordinater; i dette tilfælde vil vi bruge dem som variable, der rummer mere end én værdi. At lægge vektorerne sammen sker ved hjælp af Operator Overloading, som udvider funktionaliteten af klasseobjekter, så du kan bruge operatorer med dem, ligesom du ville med normale værdier.

For at starte skal du gå og samle de metalvanddåser, der er placeret øverst i rummet; disse vil blive brugt til at hjælpe med at skylle den vin, der bliver filtreret i fadene. Når de er samlet, skal du gå hen til det mørke X-mærke på den røde løber, vende dig mod fadet og begynde at vektorisere indholdet af hvert fad.

X-mærkerne er arrangeret i sæt af tre (3) for hver farve på løberen: et guld X-mærke, et lyst X-mærke og et mørkt X-mærke. På alle mørke og lyse X-mærker skal du bruge funktionen water() til at hjælpe med at skylle fadene. Også på alle mørke og lyse X-mærker skal du bruge funktionen read() til at identificere, hvor meget vin der behandles i den pågældende række af fade. På det gyldne X-mærke bruger du funktionen write() til at notere den samlede mængde.

I kodeeditoren er der en klasse ved navn vector. Denne bruges, så du ikke kun kan oprette en vektor, men også lægge dem sammen. Opret vector objekter til at gemme data fra de lyse og mørke X-mærker. For eksempel, på de røde løbere bliver der filtreret rødvin:

# 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

I en vektor kaldes den første position for x og den anden position for y, og formlen er således: object_name = vector(x,y). Dette er relevant for at befolke vektorerne med de oplysninger, der hentes fra funktionen read().

På de gyldne X-mærker skal du bruge funktionen write() for at skrive totalen for hvert sæt af vektorer. For eksempel, i tilfælde af de røde løber X-mærker skrives det sådan her:

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)

Husk at tilføje .x og .y til slutningen af totalen for at angive værdierne for hver vektor.

For hvert sæt farvede løbere er der en anden type vin, der bliver filtreret. På den førnævnte røde løber filtreres red_wine; på de gule løbere filtreres sparkling_wine; på de grønne løbere filtreres white_wine; og på de orange løbere filtreres orange_wine.

Når alle de lyse og mørke X-mærker er blevet skyllet med funktionen water(), og alle tegnene på de gyldne X-mærker har registreret totalerne, har du gennemført niveauet.

Kodebog