Przetestuj jedną decyzję kontrolera przed dodaniem polityki routingu
Zacznij od JavaScript w funkcjach init i update gry i naciśnij Start, aby obserwować symulację. Aby dokładnie poznać zachowanie zdarzenia idle i goToFloor, skorzystaj z informacji o interfejsie API w grze. Pierwszym ćwiczeniem jest zrozumienie, kiedy nieużywana winda otrzymuje kolejne zadanie. Obejrzyj to zdarzenie i wynikający z niego ruch przed dodaniem kilku warunków, aby móc wyjaśnić, która część kontrolera wysłała żądanie.
Następnie sprawdź miejsca docelowe pasażerów. Sam ruch nie oznacza, że pasażerowie będą obsługiwani. Przeczytaj wydarzenie floor_button_pressed w odnośniku i porównaj żądania z obserwowaną trasą. Jeśli kilka wind powtarza tę samą trasę, niektóre kolejki mogą nadal czekać. Twórz na podstawie małego, zrozumiałego kontrolera, zamiast kopiować złożone zasady i zakładając, że spełnia on bieżący cel dotyczący pasażerów lub czasu oczekiwania.
Porównaj zmianę kodu z rzeczywistym celem wyzwania
Przed uruchomieniem symulacji przeczytaj warunek zaliczenia i wybierz jedno zachowanie do sprawdzenia, takie jak czas bezczynności, powtarzające się przystanki lub pasażerowie oczekujący na konkretnym piętrze. Zmień jedną decyzję i uruchom symulację ponownie. Częstszy ruch windy nie oznacza, że kontroler spełnia cel wyzwania. Porównaj widoczne kolejki i wyświetlony wynik z celem, zamiast używać ruchu jako jedynej oznaki sukcesu.
Podczas bezpośredniej edycji destinationQueue postępuj zgodnie z wymaganiami odniesienia, aby wywołać checkDestinationQueue, aby poprawiona kolejka zaczęła obowiązywać; normalne żądania goToFloor obsługują już miejsca docelowe w kolejce. Zachowaj rozróżnienie tych podejść podczas debugowania. Centrum to opisuje symulację programowania w przeglądarce, a nie oprogramowanie dla prawdziwej windy lub systemu bezpieczeństwa produkcji. Nie gwarantuje to, że jeden kontroler poradzi sobie z każdym wyzwaniem. Skorzystaj z dokładnej dokumentacji API w grze, a następnie zapisz, które zdarzenie i zmiana routingu poprawiły konkretny test, który właśnie przeprowadziłeś.
Aby uzyskać konkretny przegląd, obejrzyj piętro z kolejką, podczas gdy winda staje się bezczynna. Określ, który przewodnik wystawia następne żądanie goToFloor i czy żądanie to służy oczekującym pasażerom, czy też odsyła windę gdzie indziej. Zmień tę jedną opcję routingu, a następnie porównaj wynik wyzwania. Jeśli konkuruje ze sobą kilka procedur obsługi, upraszczaj kontroler, aż będziesz w stanie wyjaśnić sekwencję żądań. Użyj dokumentacji API, aby poznać dokładnie obsługiwane zdarzenia. Obserwowanie jednej kolejki i jednej decyzji na raz daje dowód na potrzebę rewizji bez twierdzenia, że jest to uniwersalny optymalny kontroler.
Wskazówki i strategia dotyczące Elevator Saga
Zaznacz wskazówkę do przećwiczenia w następnej rundzie. Ta lista nie zmienia gry ani nie zapisuje postępów.
Pytania i odpowiedzi dotyczące Elevator Saga
W jakim języku piszę?
Kontroler wykorzystuje JavaScript, z funkcjami init i update w edytorze gry.
Czy to jest prawdziwa winda?
Nie. Jest to symulacja programowania odbywająca się całkowicie w grze przeglądarkowej.
Czy mogę używać go do ćwiczenia kodowania?
Tak, szczególnie sterowanie zdarzeniami i testowanie drobnych zmian. Gra jest oparta na projekcie Elevator Saga firmy Magwo, licencjonowanym przez MIT; nie jest to kurs certyfikacyjny.
Dlaczego pasażerowie czekają, mimo że winda jeździ?
Powtarzana trasa nie obsługuje automatycznie wszystkich żądanych pięter. Obsłuż floor_button_pressed i wyznaczaj cele przez goToFloor. Porównaj kolejki z celem zadania przed dodaniem przystanków. Po bezpośredniej zmianie destinationQueue wywołaj checkDestinationQueue; goToFloor sam obsługuje zwykłe żądania.