Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
Gelişmiş Sınıflar
Operatör Aşırı Yükleme
Amaç
Vektörler ve İşlem Aşırı Yükleme kullanılarak ne kadar şarabın berraklaştırıldığını say.
Şarap preslendikten sonra filtrelenmeli ve berraklaştırılmalıdır; birkaç varil filtreleniyor ve tümü durulanmalıdır. Variller mühürlenip yaşlandırılmadan önce ne kadar şarap üretildiğinin hesaplanması önemlidir.
Bunu yapmak için vektörler oluşturmanız ve bunları toplamanız gerekir, bunlar listelere benzer ancak liste kadar esnek değillerdir, bunun yerine daha bellek verimlidirler. Genellikle koordinatlarla çalışmak için kullanılırlar, bu durumda birden fazla değeri tutan değişkenler gibi kullanacağız. Vektörlerin toplanması, sınıf nesnelerinin işlevselliğini genişleterek operatörleri normal değerlerle kullanır gibi kullanmanıza olanak tanıyan İşlem Aşırı Yükleme kullanılarak yapılır.
Başlamak için, odanın üst kısmında bulunan metal su kutularını toplayın, bunlar varillerde filtrelenen şarabın durulanmasına yardımcı olacaktır. Toplandıktan sonra kırmızı halı üzerindeki koyu X işaretine yürüyün, varile yüz dönün ve her varilin içeriğini vektörleştirmeye başlayın.
X işaretleri, her renk halı için üçer adet olarak düzenlenmiştir: bir altın X işareti, bir açık X işareti ve bir koyu X işareti. Tüm koyu ve açık X işaretlerinde varillerin durulanmasına yardımcı olmak için water() fonksiyonunu kullanın. Ayrıca tüm koyu ve açık X işaretlerinde, o varil sütununda ne kadar şarabın işlendiğini belirlemek için read() fonksiyonunu kullanın. Altın X işaretinde ise miktarların toplamını not almak için write() fonksiyonunu kullanın.
Kod düzenleyicide vector adında bir sınıf bulunmaktadır, bu sınıf yalnızca vektör oluşturmanızı değil, aynı zamanda bunları toplamanızı sağlar. Açık ve koyu X işaretlerinde belirlenen verileri saklamak için vector nesneleri oluşturun, örneğin, red halılarda kırmızı şarap filtrelenmektedir:
# 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
Bir vektörde, birinci pozisyona x ve ikinci pozisyona y denir, formül şu şekildedir: object_name = vector(x,y). Bu, read() fonksiyonundan elde edilen bilgileri vektörlere yerleştirmek için önemlidir.
Altın X işaretlerinde her vektör seti için toplamı yazmak amacıyla write() fonksiyonunu kullanın, örneğin, kırmızı halı X işaretleri durumunda bu şöyle yazılır:
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)
Her vektörün değerlerini belirlemek için toplamın sonuna .x ve .y eklemeyi unutmayın.
Her renk halı setinde farklı bir şarap türü filtrelenmektedir. Bahsedilen red halıda red_wine filtrelenirken; yellow halılarda sparkling_wine; green halılarda white_wine ve orange halılarda orange_wine filtrelenmektedir.
Tüm açık ve koyu X işaretleri water() fonksiyonu ile durulandıktan ve altın X işaretlerinin üzerindeki tüm işaretler toplamları not aldıktan sonra, seviyeyi tamamlamış olacaksınız.