Οδηγός Elevator Saga

Elevator Saga: χειρισμός, συμβουλές στρατηγικής και απαντήσεις, με συνδέσμους προς το παιχνίδι και τις πλήρεις οδηγίες.

Παίξτε Elevator Saga

Προγραμματισμός ελεγκτή ανελκυστήρα

Επεξεργαστείτε τις συναρτήσεις JavaScript init και update και, στη συνέχεια, πατήστε Έναρξη για να εκτελέσετε το χειριστήριό σας.

Χειρισμοί και πλήρεις οδηγίες

Δοκιμή ενός συμβάντος idle πριν από την προσθήκη κανόνων δρομολόγησης

Ένας ελεγκτής που βασίζεται σε συμβάντα μπορεί να δώσει σε έναν ανελκυστήρα μια νέα εργασία όταν γίνει idle.

Χειρισμοί και πλήρεις οδηγίες

Δοκιμάστε μία απόφαση ελεγκτή πριν προσθέσετε μια πολιτική δρομολόγησης

Ξεκινήστε με JavaScript στις συναρτήσεις init και update του παιχνιδιού και πατήστε Έναρξη για να παρατηρήσετε την προσομοίωση. Χρησιμοποιήστε την αναφορά API του παιχνιδιού για την ακριβή συμπεριφορά του συμβάντος idle και goToFloor. Μια πρώτη άσκηση είναι να κατανοήσουμε πότε ένας ανελκυστήρας σε αδράνεια λαμβάνει την επόμενη εργασία του. Παρακολουθήστε αυτό το συμβάν και την κίνηση που προκύπτει πριν προσθέσετε πολλές συνθήκες, ώστε να μπορείτε να εξηγήσετε ποιο τμήμα του ελεγκτή εξέδωσε ένα αίτημα.

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

Συγκρίνετε μια αλλαγή κώδικα με τον πραγματικό στόχο της πρόκλησης

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

Κατά την απευθείας επεξεργασία του destinationQueue, ακολουθήστε την απαίτηση της αναφοράς να καλέσετε το checkDestinationQueue, ώστε να τεθεί σε ισχύ η αναθεωρημένη ουρά. Τα κανονικά goToFloor αιτήματα χειρίζονται ήδη προορισμούς στην ουρά. Διατηρήστε αυτές τις προσεγγίσεις διακριτές κατά τον εντοπισμό σφαλμάτων. Αυτό το κέντρο περιγράφει μια προσομοίωση προγραμματισμού προγράμματος περιήγησης, όχι λογισμικό για έναν πραγματικό ανελκυστήρα ή ένα σύστημα ασφάλειας παραγωγής. Δεν εγγυάται ότι ένας ελεγκτής θα περάσει κάθε πρόκληση. Χρησιμοποιήστε την ακριβή τεκμηρίωση του API μέσα στο παιχνίδι και, στη συνέχεια, καταγράψτε ποιο συμβάν και αλλαγή δρομολόγησης βελτίωσαν τη συγκεκριμένη δοκιμή που μόλις εκτελέσατε.

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

Συμβουλές και στρατηγική για το Elevator Saga

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

Ερωτήσεις και απαντήσεις για το Elevator Saga

Σε ποια γλώσσα να γράψω;

Το χειριστήριο χρησιμοποιεί το JavaScript, με τις λειτουργίες init και update στον επεξεργαστή του παιχνιδιού.

Λειτουργεί αυτό πραγματικό ασανσέρ;

Όχι. Είναι μια προσομοίωση προγραμματισμού εξ ολοκλήρου μέσα στο παιχνίδι του προγράμματος περιήγησης.

Μπορώ να το χρησιμοποιήσω για εξάσκηση στον προγραμματισμό;

Ναι, ιδιαίτερα στον έλεγχο που βασίζεται σε συμβάντα και στη δοκιμή μικρών αλλαγών. Το παιχνίδι βασίζεται στο έργο Elevator Saga της magwo, το οποίο έχει λάβει άδεια MIT. Δεν είναι μάθημα πιστοποίησης.

Γιατί περιμένουν επιβάτες ενώ το ασανσέρ κινείται;

Μια επαναλαμβανόμενη διαδρομή δεν εξυπηρετεί αυτόματα όλους τους ζητούμενους ορόφους. Χειριστείτε floor_button_pressed και χρησιμοποιήστε goToFloor για προορισμούς. Συγκρίνετε ουρές με τον στόχο πριν προσθέσετε στάσεις. Με άμεση αλλαγή destinationQueue καλέστε checkDestinationQueue· το goToFloor χειρίζεται ήδη κανονικά αιτήματα.

Χειρισμοί και πλήρεις οδηγίες

Χειρισμοί και πλήρεις οδηγίες

Παίξτε Elevator Saga