Test én controllerbeslutning, før du tilføjer en routingpolitik
Start med JavaScript i spillets init- og update-funktioner og tryk på Start for at se simuleringen. Brug API-referencen i spillet til den nøjagtige idle- og goToFloor-adfærd. En første øvelse er at forstå, hvornår en ledig elevator får sin næste opgave. Se den begivenhed og den deraf følgende bevægelse, før du tilføjer flere betingelser, så du kan forklare, hvilken del af controlleren, der har udstedt en anmodning.
Undersøg derefter passagerernes destinationer. Bevægelse alene betyder ikke, at passagererne bliver betjent. Læs begivenheden floor_button_pressed i referencen, og sammenlign anmodninger med den rute, du observerer. Hvis flere elevatorer gentager den samme rute, kan nogle køer stadig vente. Byg ud fra en lille controller, du forstår i stedet for at kopiere en kompleks politik og antage, at den opfylder den aktuelle udfordrings passager- eller ventetidsmål.
Sammenlign en kodeændring med udfordringens faktiske mål
Inden du starter simuleringen skal du læse betingelsen for at bestå udfordringen og vælge en adfærd at inspicere, såsom tomgang, gentagne stop eller passagerer, der venter på en bestemt etage. Skift en beslutning og kør igen. Hyppigere bevægelse af elevatoren garanterer ikke, at controlleren klarer udfordringen. Sammenlign de synlige køer og det viste resultat med målet i stedet for at bruge bevægelse som det eneste tegn på succes.
Når du redigerer destinationQueue direkte, følg referencens krav om at ringe til checkDestinationQueue, så den reviderede kø træder i kraft; normale goToFloor anmodninger håndterer allerede destinationer i kø. Hold disse tilgange adskilte, mens du fejlfinder. Dette center beskriver en browserprogrammeringssimulering, ikke software til en rigtig elevator eller et produktionssikkerhedssystem. Det garanterer ikke, at én controller vil bestå hver udfordring. Brug den nøjagtige API-dokumentation inde i spillet, og optag derefter, hvilken hændelse og routingændring, der forbedrede den særlige test, du lige har kørt.
For en konkret gennemgang, se en etage med en kø, mens en elevator bliver ledig. Identificer, hvilken fører der udsteder den næste goToFloor anmodning, og om denne anmodning tjener de ventende passagerer eller sender elevatoren et andet sted hen. Skift det ene rutevalg, og sammenlign derefter udfordringsresultatet. Hvis flere handlere konkurrerer, skal du forenkle controlleren, indtil du kan forklare rækkefølgen af anmodninger. Brug API-referencen til de nøjagtige understøttede hændelser. At observere én kø og én beslutning ad gangen giver dig bevis for en revision uden at påstå, at det er en universel optimal controller.
Elevator Saga tips og strategi
Markér et tip til din næste runde. Listen ændrer ikke spillet og gemmer ikke dine fremskridt.
Elevator Saga spørgsmål og svar
Hvilket sprog skriver jeg?
Controlleren bruger JavaScript med init- og update-funktioner i spillets editor.
Betjener dette en rigtig elevator?
Nej. Det er en programmeringssimulering udelukkende inde i browserspillet.
Kan jeg bruge det til at øve mig i kodning?
Ja, især eventdrevet kontrol og test af små ændringer. Spillet er baseret på magwos MIT-licenserede Elevator Saga-projekt; det er ikke et certificeringskursus.
Hvorfor venter passagerer, selv om elevatoren kører?
En gentaget rute betjener ikke automatisk alle ønskede etager. Håndtér floor_button_pressed og brug goToFloor til destinationerne. Sammenlign køerne med udfordringens mål, før du tilføjer stop. Ændrer du destinationQueue direkte, skal du kalde checkDestinationQueue; goToFloor håndterer allerede normale forespørgsler.