Coding for KidsCoding for Kids
Креативни НиваПредизвикателстваРъководство за Учители
Гласувайте за функции
Курс по усъвършенствано разработване с Python
Глава
>
Ниво

Разширени класове
Претоварване на оператори

Цел

Изчислете колко вино се пречиства, използвайки вектори и пренатоварване на оператори.

След като виното бъде пресовано, то трябва да бъде филтрирано и пречистено. Има няколко бъчви, които се филтрират, и целият процес трябва да бъде изплакнат. Важно е да се преброи колко вино се произвежда, за да могат бъчвите да бъдат запечатани и отлежавани.

За да постигнете това, трябва да създадете вектори и да ги съберете заедно; те са подобни на списъци, но не са толкова гъвкави, въпреки че са по-ефективни по отношение на паметта. Обикновено се използват за работа с координати, а в този случай ще ги използваме като променливи, които съдържат повече от една стойност. Събирането на векторите става чрез използване на пренатоварване на оператори, което разширява функционалността на обектите от класове, позволявайки да работите с тях по същия начин, както с нормални стойности.

За да започнете, обходете и съберете металните консерви за вода, разположени в горната част на стаята; те ще се използват за изплакване на виното, което се филтрира в бъчвите. След като ги съберете, отидете към тъмната X отметка над червения килим, обърнете се към бъчвата и започнете да векторизирате съдържанието на всяка бъчва.

X отметките са подредени в групи от по три (3) за всеки цветен килим: златна X отметка, светла X отметка и тъмна X отметка. При всички тъмни и светли X отметки използвайте функцията water() за изплакване на бъчвите. Също така, на всички тъмни и светли X отметки, използвайте функцията read(), за да определите колко вино се обработва в тази колона от бъчви. На златната X отметка използвайте функцията write(), за да запишете събраната сума от количествата.

В редактора на кода има клас с име vector, който ви позволява не само да създавате вектори, но и да ги събирате заедно. Създайте обекти от тип vector, за да съхраните данните, събрани от светлите и тъмните X отметки; например, на red килимите се филтрира червено вино:

# 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

В един вектор първата позиция се нарича x, а втората позиция – y, като формулата е: object_name = vector(x,y). Това е от съществено значение при попълване на векторите с информацията, събрана чрез функцията read().

На златните X отметки използвайте функцията write(), за да запишете общата сума за всяка група вектори; например, при случая с X отметките на червения килим, това се пише така:

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)

Не забравяйте да добавите .x и .y в края на общата сума, за да идентифицирате стойностите на всеки вектор.

За всяка група цветни килими се филтрира различен вид вино. При споменатия red килим се филтрира red_wine; при yellow килимите се филтрира sparkling_wine; при green килимите се филтрира white_wine; а при orange килимите се филтрира orange_wine.

След като всички светли и тъмни X отметки бъдат изплакнати с функцията water() и всички знаци на златните X отметки бъдат отбелязани с общите суми, ще сте завършили нивото.

Книга с Код