Test én kontrollerbeslutning før du legger til en rutingpolicy
Start med JavaScript i spillets init- og update-funksjoner og trykk Start for å se simuleringen. Bruk API-referansen i spillet for den nøyaktige oppførselen til idle og goToFloor. En første øvelse er å forstå når en ledig heis får sin neste oppgave. Se den hendelsen og den resulterende bevegelsen før du legger til flere forhold, slik at du kan forklare hvilken del av kontrolleren som har utstedt en forespørsel.
Inspiser deretter passasjerdestinasjoner. Bevegelse alene betyr ikke at passasjerer blir servert. Les floor_button_pressed-hendelsen i referansen og sammenlign forespørsler med ruten du observerer. Hvis flere heiser gjentar samme rute, kan noen køer fortsatt vente. Bygg fra en liten kontroller du forstår i stedet for å kopiere en kompleks policy og anta at den tilfredsstiller gjeldende utfordrings passasjer- eller ventetidsmål.
Sammenlign en kodeendring med utfordringens faktiske mål
Før du starter simuleringen, les kravet for å bestå utfordringen og velg én atferd å inspisere, for eksempel tomgangstid, gjentatte stopp eller passasjerer som venter i en bestemt etasje. Endre en beslutning og kjør på nytt. Hyppigere bevegelse av heisen garanterer ikke at kontrolleren klarer utfordringen. Sammenlign de synlige køene og det viste resultatet med målet i stedet for å bruke bevegelse som eneste tegn på suksess.
Når du redigerer destinationQueue direkte, følg referansens krav om å ringe checkDestinationQueue slik at den reviderte køen trer i kraft; normale goToFloor forespørsler håndterer allerede destinasjoner i kø. Hold disse tilnærmingene forskjellige mens du feilsøker. Dette senteret beskriver en nettleserprogrammeringssimulering, ikke programvare for en ekte heis eller et produksjonssikkerhetssystem. Det garanterer ikke at én kontroller vil bestå hver utfordring. Bruk den nøyaktige API-dokumentasjonen inne i spillet, og registrer deretter hvilken hendelse og ruteendring som forbedret den spesielle testen du nettopp kjørte.
For en konkret gjennomgang, se en etasje med kø mens en heis blir inaktiv. Identifiser hvilken behandler som sender den neste goToFloor-forespørselen og om den forespørselen tjener de ventende passasjerene eller sender heisen et annet sted. Endre det ene rutevalget, og sammenlign deretter utfordringsresultatet. Hvis flere behandlere konkurrerer, forenkle kontrolleren til du kan forklare rekkefølgen av forespørsler. Bruk API-referansen for de eksakte støttede hendelsene. Å observere én kø og én beslutning om gangen gir deg bevis for en revisjon uten å hevde at det er en universell optimal kontroller.
Elevator Saga tips og strategi
Kryss av et tips for neste runde. Denne listen endrer ikke spillet og lagrer ikke fremgangen din.
Elevator Saga spørsmål og svar
Hvilket språk skriver jeg?
Kontrolleren bruker JavaScript, med init- og update-funksjoner i spillets editor.
Betjener denne en ekte heis?
Nei. Det er en programmeringssimulering utelukkende i nettleserspillet.
Kan jeg bruke den til å øve på koding?
Ja, spesielt hendelsesdrevet kontroll og testing av små endringer. Spillet er basert på magwos MIT-lisensierte Elevator Saga-prosjekt; det er ikke et sertifiseringskurs.
Hvorfor venter passasjerer selv om heisen beveger seg?
En gjentatt rute betjener ikke alle ønskede etasjer automatisk. Behandle floor_button_pressed og bruk goToFloor til reisemålene. Sammenlign køene med målet før du legger til stopp. Endrer du destinationQueue direkte, må du kalle checkDestinationQueue; goToFloor behandler vanlige forespørsler allerede.