Coding for KidsCoding for Kids
Δημιουργικά ΕπίπεδαΠροκλήσειςΟδηγός Εκπαιδευτικού
Ψηφίστε για λειτουργίες
Προχωρημένο Μάθημα Ανάπτυξης σε Python
Κεφάλαιο
>
Επίπεδο

Προχωρημένες Κλάσεις
Υπερφόρτωση Τελεστών

Στόχος

Καταμέτρηση της ποσότητας του κρασιού που καθαρίζεται χρησιμοποιώντας διανύσματα και Υπερφόρτωση Τελεστών.

Αφού έχει πιεστεί το κρασί, πρέπει να φιλτραριστεί και να καθαριστεί, υπάρχουν αρκετές βαρέλια που υφίστανται φιλτράρισμα και όλο το ποσό πρέπει να ξεπλυθεί. Είναι σημαντικό να μετράμε πόσο κρασί παράγεται ώστε τα βαρέλια να μπορούν να σφραγιστούν και να ωριμάσουν.

Για να το κάνετε αυτό, πρέπει να δημιουργήσετε διανύσματα και να τα προσθέσετε μεταξύ τους, αυτά είναι παρόμοια με λίστες αλλά δεν είναι τόσο ευέλικτα και είναι πιο αποδοτικά στη χρήση μνήμης. Συνήθως χρησιμοποιούνται για την επεξεργασία συντεταγμένων, σε αυτή την περίπτωση θα τα χρησιμοποιήσουμε σαν μεταβλητές που κρατούν περισσότερες από μία τιμές. Η πρόσθεση των διανυσμάτων γίνεται χρησιμοποιώντας την Υπερφόρτωση Τελεστών, η οποία επεκτείνει τη λειτουργικότητα των αντικειμένων κλάσης ώστε να χρησιμοποιούνται τελεστές πάνω τους όπως θα κάνατε με κανονικές τιμές.

Για να ξεκινήσετε, περπατήστε και μαζέψτε τους μεταλλικούς ντίνες νερού που βρίσκονται στην κορυφή του δωματίου, αυτοί θα χρησιμοποιηθούν για να βοηθήσουν στο ξεπάγωμα του κρασιού που φιλτράρεται στα βαρέλια. Μόλις μαζευτούν, περπατήστε μέχρι το σκοτεινό σημάδι X πάνω από το κόκκινο χαλί, στρέψτε προς το βαρέλι και ξεκινήστε την διανυσματικοποίηση του περιεχομένου κάθε βαρελιού.

Τα σημάδια X είναι διατεταγμένα σε σύνολα των τριών (3) για κάθε χρώμα χαλιού, ένα χρυσό X, ένα ανοιχτό X και ένα σκοτεινό X. Σε όλα τα σκοτεινά και ανοιχτά σημάδια X χρησιμοποιήστε τη συνάρτηση water() για να βοηθήσετε στο ξεπάγωμα των βαρελιών. Επίσης, σε όλα τα σκοτεινά και ανοιχτά σημάδια X, χρησιμοποιήστε τη συνάρτηση read() για να εντοπίσετε πόσο κρασί επεξεργάζεται σε αυτήν τη στήλη βαρελιών. Στο χρυσό σημάδι X χρησιμοποιείτε τη συνάρτηση write() για να σημειώσετε το άθροισμα των ποσοτήτων.

Στον επεξεργαστή κώδικα υπάρχει μια κλάση με όνομα vector, η οποία χρησιμοποιείται για να μπορείτε όχι μόνο να δημιουργήσετε ένα διάνυσμα αλλά και να το προσθέσετε. Δημιουργήστε αντικείμενα vector για να αποθηκεύσετε τα δεδομένα που εντοπίστηκαν στα ανοιχτά και σκοτεινά σημάδια X, για παράδειγμα, στο κόκκινο χαλί φιλτράρεται κόκκινο κρασί:

# 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_wine; στα κίτρινα χαλιά, φιλτράρεται sparkling_wine; στα πράσινα χαλιά, φιλτράρεται white_wine; και στα πορτοκαλί χαλιά, φιλτράρεται orange_wine.

Μόλις όλα τα ανοιχτά και σκοτεινά σημάδια X ξεπλυτούν με τη συνάρτηση water() και όλα τα σημάδια στα χρυσά σημάδια X έχουν σημειωθεί τα σύνολα, θα έχετε ολοκληρώσει το επίπεδο.

Βιβλίο Κώδικα