Μετάβαση στο κύριο περιεχόμενο

Η Πρόκληση της Διεπαφής Χρήστη - Python

Η οθόνη εγκεφάλου V5 εμφανίζει την ένδειξη UI Challenge στην κορυφή και χωρίζεται σε τέσσερα τεταρτημόρια. Το πάνω αριστερό μέρος είναι φωτεινό πράσινο, το πάνω δεξιά είναι φωτεινό ροζ, το κάτω δεξιά είναι φωτεινό μπλε και το κάτω αριστερό μέρος είναι πορτοκαλί.

Η Πρόκληση της Διεπαφής Χρήστη

Στην Πρόκληση Διεπαφής Χρήστη, θα προγραμματίσετε το Clawbot έτσι ώστε ο χρήστης να μπορεί να πατήσει την οθόνη του Εγκεφάλου για να ελέγξει τους κινητήρες του βραχίονα και των νυχιών. Στη συνέχεια, τα τέσσερα κουμπιά στην οθόνη θα χρησιμοποιηθούν για την παραλαβή και αντικατάσταση μιας ποικιλίας δέκα αντικειμένων. Αυτή η πρόκληση δεν απαιτεί από το Clawbot να οδηγεί ή να στρίβει. Τα αντικείμενα μαζεύονται και στη συνέχεια τοποθετούνται ξανά στο ίδιο σημείο στο τραπέζι ή στο πάτωμα.

Κανόνες:

  • Κάθε ένα από τα τέσσερα κουμπιά πρέπει να κάνει μόνο μία από τις τέσσερις ενέργειες: άνοιγμα του νυχιού, κλείσιμο του νυχιού, ανύψωση του βραχίονα ή κατέβασμα του βραχίονα.
  • Η χρήση του χειριστηρίου δεν επιτρέπεται.
  • Κάθε Clawbot θα πρέπει να σηκώσει και να αντικαταστήσει όσο το δυνατόν περισσότερα αντικείμενα μέσα σε ένα λεπτό και χωρίς να τα ρίξει. Συνιστάται η ανύψωση και η αντικατάσταση ενός αντικειμένου κάθε φορά.
    • Ο γύρος του ενός λεπτού τελειώνει στοήτου 1 λεπτού, αν πέσει οποιοδήποτε αντικείμενο - ακόμα κι αν ο γύρος έχει περάσει μόνο λίγα δευτερόλεπτα. Η πτώση ενός αντικειμένου αποκλείει την ομάδα από ολόκληρο το λεπτό του γύρου, αλλά υπολογίζονται τυχόν πόντοι που έχουν κερδηθεί πριν από την πτώση.
  • Εάν όλα τα παρεχόμενα αντικείμενα έχουν ανυψωθεί πριν τελειώσει ο γύρος του ενός λεπτού, τα αντικείμενα μπορούν να επαναχρησιμοποιηθούν μέχρι να συμπληρωθεί ο χρόνος.
  • Το αντικείμενο πρέπει να ανυψωθεί ψηλότερα από τον κινητήρα του βραχίονα πριν τοποθετηθεί ξανά στο τραπέζι.
  • Κάθε αντικείμενο που πιάνεται και σηκώνεται με επιτυχία, στη συνέχεια κατεβαίνει και επανατοποθετείται αξίζει έναν πόντο.
  • Μεταξύ των γύρων, οι ρόλοι μπορούν να αλλάξουν, αλλά μόνο ένας χρήστης ανά Clawbot μπορεί να παίξει σε κάθε γύρο.
  • Η ομάδα με τους περισσότερους πόντους στο τέλος όλων των γύρων κερδίζει!

Κενός πίνακας δεδομένων με τρεις στήλες. Από αριστερά προς τα δεξιά, οι στήλες έχουν τους εξής τίτλους: Αριθμός στρογγυλοποίησης, Αναγνωριστικό Clawbot, Αριθμός αντικειμένων που ανυψώθηκαν και αντικαταστάθηκαν με επιτυχία.

Ρόλοι στην Πρόκληση:

  • Θα πρέπει να υπάρχει μόνο ένας χρήστης (ο αρσιβαρίστας) που θα σηκώνει τα αντικείμενα κατά τη διάρκεια κάθε γύρου, αλλά οι ομάδες μπορούν να αλλάζουν χρήστες μεταξύ των γύρων.
  • Θα πρέπει να υπάρχει ένας καθορισμένοςβαθμολογητήςο οποίος θα καταμετρά πόσα αντικείμενα μπορεί να σηκώσει με επιτυχία κάθε Clawbot. Κάθε αντικείμενο που αντικαθίσταται με επιτυχία αξίζει έναν πόντο. Αφού ρίξετε ένα αντικείμενο, η σειρά του Clawbot τελειώνει. Μπορούν να παιχτούν πολλαπλοί γύροι. Ένας πίνακας βαθμολόγησης περιλαμβάνεται εδώ, αλλά μπορούν να προστεθούν γραμμές για επιπλέον ομάδες και γύρους. Κάθε ομάδα μπορεί να χρησιμοποιήσει τον δικό της πίνακα βαθμολόγησης ή όλοι μπορούν να καταγράψουν στον ίδιο. Εάν πολλές ομάδες χρησιμοποιούν τον ίδιο πίνακα βαθμολογίας, γράψτε το Clawbot ID ή το όνομα της ομάδας κάθε ομάδας στη δεύτερη στήλη. Επίσης, ο βαθμολογητής θα πρέπει να συνδυάσει τους πόντους από κάθε γύρο στο τέλος της Πρόκλησης Διεπαφής Χρήστη για να δημιουργήσει τη συνολική βαθμολογία.
  • Θα πρέπει να υπάρχει ένα άτομο στο οποίο θα ανατίθεται η εναλλαγή αντικειμένων από τον πίνακα: ο εναλλάκτης. Επειδή το Clawbot δεν γυρίζει ούτε κινείται, το ανυψωμένο αντικείμενο θα πρέπει να αφαιρείται και να αντικαθίσταται με ένα νέο αντικείμενο μετά από κάθε προσπάθεια.
  • Θα πρέπει να υπάρχει ένα άτομο στο οποίο θα ανατίθεται η παρακολούθηση του χρόνου: οχρονομέτρης. Κάθε γύρος διαρκεί ένα λεπτό.
  • Ο/Η εκπαιδευτικός θα πρέπει να παρέχει τα αντικείμενα που έχουν εγκριθεί για αυτήν την πρόκληση πριν από την έναρξη.

Εικονίδιο Συμβουλών Δασκάλου Συμβουλές για τους Δασκάλους

  • Υπενθυμίστε στους μαθητές ότι επιτρέπεται να αγγίζουν μόνο την οθόνη του Clawbot.
  • Να παρέχετε μόνο αντικείμενα που είναι ασφαλή για πιθανή πτώση: ένα άδειο κουτί ή μπουκάλι νερού, έναν κύβο VEX, ένα αχρησιμοποίητο κομμάτι από το κιτ VEX ή οτιδήποτε άλλο που δεν θα υποστεί μόνιμη ζημιά από πτώση ή αναπήδηση. 
  • Αφήστε τους παρατηρητές να δουν πώς μοιάζει η οθόνη κάθε Clawbot. Τα ορθογώνια θα πρέπει να είναι τα ίδια, αλλά τα χρώματα κάθε Clawbot πιθανότατα θα διαφέρουν.
  • Συζητήστε τις απόψεις των μαθητών σχετικά με τις καλύτερες επιλογές χρωμάτων είτε κατά τη διάρκεια είτε μετά την πρόκληση.

Εικονίδιο Εργαλειοθήκης Εκπαιδευτικού Εργαλειοθήκη Δασκάλου

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

  • Παράδειγμα Λύσης Προγραμματισμού
# Κωδικός έναρξης έργου
screen_buttons = Event()

def has_screen_buttons():
    brain.screen.set_fill_color(Color.GREEN)
    brain.screen.draw_rectangle(0, 0, 240, 120)
    brain.screen.set_fill_color(Color.PURPLE)
    brain.screen.draw_rectangle(240, 0, 480, 120)
    brain.screen.set_fill_color(Color.ORANGE)
    brain.screen.draw_rectangle(0, 120, 240, 240)
    brain.screen.set_fill_color(Color.CYAN)
    brain.screen.draw_rectangle(240, 120, 480, 240)
    wait(1, SECONDS)

screen_buttons(has_screen_buttons)

while True:
    screen_buttons.broadcast()

    αν brain.screen.pressing():

        αν brain.screen.x_position() < 240:

            αν brain.screen.y_position() < 120:
                claw_motor.spin(FORWARD)
                ενώ brain.screen.pressing():
                    wait(5, MSEC)

            αλλιώς:
                claw_motor.spin(REVERSE)
                ενώ brain.screen.pressing():
                    wait(5, MSEC)

        αλλιώς:
            αν brain.screen.y_position() < 120:
                arm_motor.spin(FORWARD)
                ενώ brain.screen.pressing():
                    wait(5, MSEC) 
            
            αλλιώς:
                arm_motor.spin(REVERSE)
                ενώ brain.screen.pressing():
                    wait(5, MSEC) 

       claw_motor.stop()
       arm_motor.stop()
       
    wait(5, MSEC)