Avansert Python-utviklingskurs
Kapittel 5
>
NivÄ 5
MÄl
Tell opp hvor mye vin som blir klarert ved Ă„ bruke vektorer og operatĂžr overbelastning.
Etter at vinen har blitt presset, mÄ den filtreres og klareres. Det er flere tÞnner som filtreres, og de mÄ skylles gjennom. Det er viktig Ä telle opp hvor mye vin som produseres, slik at tÞnner kan forsegles og modnes.
For Ä gjÞre dette mÄ du lage vektorer og legge dem sammen. Disse ligner pÄ lister, men er ikke like fleksible, samtidig som de er mer minneeffektive. De brukes vanligvis til Ä hÄndtere koordinater; i dette tilfellet vil vi bruke dem som variabler som inneholder mer enn én verdi. à legge sammen vektorene gjÞres ved Ä bruke OperatÞr Overbelastning, som utvider funksjonaliteten til klasseobjekter slik at operatÞrer kan benyttes med dem pÄ samme mÄte som med vanlige verdier.
For Ä starte: gÄ og samle de metalliske vanntinnene som er plassert Þverst i rommet. Disse vil bli brukt til Ä hjelpe med Ä skylle vinen som filtreres i tÞnner. NÄr de er samlet, gÄ til det mÞrke X-merket over det rÞde teppet, vend deg mot tÞnnen og begynn Ä vektorisere innholdet i hver tÞnne.
X-merker er arrangert i sett pÄ tre (3) for hvert farget teppe; et gull X-merke, et lyst X-merke og et mÞrkt X-merke. PÄ alle mÞrke og lyse X-merker, bruk water()-funksjonen for Ä hjelpe med Ä skylle tÞnner. OgsÄ pÄ alle mÞrke og lyse X-merker, bruk read()-funksjonen for Ä identifisere hvor mye vin som behandles i den kolonnen med tÞnner. PÄ det gull X-merket bruker du write()-funksjonen for Ä notere oppsummeringen av mengdene sammen.
I kodeeditoren finnes det en klasse kalt vector. Denne brukes slik at du ikke bare kan lage en vektor, men ogsÄ legge dem sammen. Lag vector-objekter for Ä lagre dataene som er identifisert pÄ de lyse og mÞrke X-merkene. For eksempel, pÄ red-teppene filtreres 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 kalles den fĂžrste posisjonen for x og den andre posisjonen for y, med formelen slik: object_name = vector(x,y). Dette er relevant for Ă„ fylle vektorene med informasjonen hentet fra read()-funksjonen.
PĂ„ de gull X-merkene, bruk write()-funksjonen for Ă„ skrive ned totalen for hvert sett med vektorer. For eksempel, i tilfelle av de rĂžde teppenes X-merker, skrives det slik:
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 Ä legge til .x og .y pÄ slutten av totalen for Ä identifisere verdiene til hver vektor.
For hvert sett med fargede tepper blir det filtrert en annen type vin. PÄ det nevnte red-teppet filtreres red_wine; pÄ de yellow-teppene filtreres sparkling_wine; pÄ de green-teppene filtreres white_wine; og pÄ de orange-teppene filtreres orange_wine.
NÄr alle lyse og mÞrke X-merker har blitt skylt med water()-funksjonen, og alle tegn pÄ de gull X-merkene har totalene skrevet ned, vil du ha fullfÞrt nivÄet.