Курс по усъвършенствано разработване с Python
Глава
>
Ниво
Разширени списъци
Модифициране на матрица
Цел
Съберете и съхранете бутилки вино на винения рафт чрез модифициране на Матрица.
Има няколко бутилки вино, които трябва да бъдат съхранени в рафта за вино. Обаче, има и няколко бутилки вече съхранени в рафта, затова обектите трябва да бъдат поставени на конкретни места, за да бъдат прибрани.
Бутилките на рафта са съхранени в Матрица, тип Вложен Списък. Матриците са вложени списъци, при които всеки елемент е списък с точно същата дължина, което създава нещо като решетка, където елементите са разделени на редове и колони. Например:
matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0] ]
В горния код имаме Матрица с три (3) колони и четири (4) реда. За да достъпите елемент в Матрицата, трябва да укажете реда и колоната, в които се намира елементът, подобно на това, как бихте достъпили елементи от стандартен списък, но с две стойности вместо една. Например, базирано на горния код: matrix[0][0] = 1, matrix[0][1] = 2, matrix[1][0] = 4, и т.н.
В мазето има четири (4) различни типа бутилки вино, а именно: "purple bottle", "green bottle", "blue bottle", "yellow bottle". Съберете всички бутилки на полето, за да бъдат поставени в рафта.
Има и бутилки, съхранени в кашони. Отидете до светлия X знак и използвайте функцията collect() докато сте обърнати към кашоните, за да вземете бутилките. Има две константи, които съдържат съдържанието на кашоните: lower_crate и upper_crate. Техните имена съответстват на позицията им на картата и се използват както следва: player.collect(lower_crate).
След като сте събрали всички бутилки, поставете броя на бутилките, които сте събрали от всеки тип, в променливи, а именно: purple_bottle, green_bottle, blue_bottle, yellow_bottle. След това отидете до златния X знак и се обърнете към винения рафт.
В редактора на кода ще се покаже Матрица с име wine_rack. Потърсете елементите в Матрицата, които имат стойност 0, и добавете събраните бутилки към тези стойности. Матрицата ще има очертани в отделните редове цвета на бутилката, която трябва да бъде добавена. За да добавите нов елемент в Матрицата, въведете реда и колоната, в която искате стойността да бъде поставена, например: wine_rack[0][1] = purple_bottle.
Запомнете, че всички позиции в списъците започват от 0. След като всички елементи са добавени в Матрицата и тя е пълна, използвайте функцията place() последвана от функцията speak() на златния X знак с името на Матрицата, за да потвърдите нейното съдържание и да завършите нивото, както следва: player.place(wine_rack), player.speak(wine_rack).