Test één controllerbeslissing voordat u een routeringsbeleid toevoegt
Begin met JavaScript in de functies init en update van de game en druk op Start om de simulatie te bekijken. Gebruik de in-game API-referentie voor het exacte gedrag van idle en goToFloor. Een eerste oefening is om te begrijpen wanneer een stilstaande lift zijn volgende taak krijgt. Bekijk die gebeurtenis en de daaruit voortvloeiende beweging voordat u verschillende voorwaarden toevoegt, zodat u kunt uitleggen welk deel van de controller een verzoek heeft ingediend.
Inspecteer vervolgens passagiersbestemmingen. Beweging alleen betekent niet dat passagiers worden bediend. Lees de gebeurtenis floor_button_pressed in de referentie en vergelijk verzoeken met de route die u observeert. Als meerdere liften dezelfde route herhalen, kunnen er nog steeds wachtrijen zijn. Bouw op basis van een kleine controller die u begrijpt, in plaats van een complex beleid te kopiëren en ervan uit te gaan dat dit voldoet aan de passagiers- of wachttijddoelstelling van de huidige uitdaging.
Vergelijk een codewijziging met het daadwerkelijke doel van de uitdaging
Lees voordat u de simulatie start de voorwaarde om de uitdaging te halen en kies één gedrag dat u wilt inspecteren, zoals inactiviteit, herhaalde stops of wachtende passagiers op een bepaalde verdieping. Verander één beslissing en voer opnieuw uit. Dat de lift vaker beweegt, bewijst niet dat de controller de uitdaging haalt. Vergelijk de zichtbare wachtrijen en het weergegeven resultaat met het doel in plaats van beweging als het enige teken van succes te gebruiken.
Wanneer u destinationQueue rechtstreeks bewerkt, volgt u de vereiste van de referentie om checkDestinationQueue aan te roepen, zodat de herziene wachtrij van kracht wordt; normale goToFloor-aanvragen verwerken al bestemmingen in de wachtrij. Houd deze benaderingen gescheiden tijdens het debuggen. Dit centrum beschrijft een browserprogrammeringssimulatie, geen software voor een echte lift of een productieveiligheidssysteem. Het garandeert niet dat één controller elke uitdaging zal doorstaan. Gebruik de exacte API-documentatie in het spel en noteer vervolgens welke gebeurtenis en routeringswijziging de specifieke test die je zojuist hebt uitgevoerd, heeft verbeterd.
Kijk voor een concreet overzicht naar een verdieping met een wachtrij terwijl een lift stilstaat. Bepaal welke afhandelaar het volgende goToFloor-verzoek indient en of dat verzoek de wachtende passagiers bedient of de lift ergens anders naartoe stuurt. Verander die ene routekeuze en vergelijk vervolgens het uitdagingsresultaat. Als meerdere handlers met elkaar concurreren, vereenvoudig dan de controller totdat u de volgorde van de verzoeken kunt uitleggen. Gebruik de API-referentie voor de exacte ondersteunde gebeurtenissen. Door één wachtrij en één beslissing tegelijk te observeren, krijgt u bewijs voor een herziening zonder te beweren dat het een universele optimale controller is.
Tips en strategieën voor de Elevator Saga
Vink een tip aan voor je volgende ronde. Deze lijst verandert het spel niet en slaat je spelvoortgang niet op.
Vragen en antwoorden over de Elevator Saga
In welke taal schrijf ik?
De controller gebruikt JavaScript, met de functies init en update in de game-editor.
Bedient dit een echte lift?
Nee. Het is een programmeersimulatie die volledig binnen het browserspel plaatsvindt.
Kan ik het gebruiken om te oefenen met programmeren?
Ja, met name gebeurtenisgestuurde besturing en het testen van kleine wijzigingen. Het spel is gebaseerd op het door Magwo ontwikkelde Elevator Saga-project, waarvoor een MIT-licentie is verleend; het is geen certificeringscursus.
Waarom wachten passagiers terwijl de lift beweegt?
Een herhaalde route bedient niet automatisch alle gevraagde verdiepingen. Verwerk floor_button_pressed en gebruik goToFloor voor hun bestemmingen. Vergelijk wachtrijen met het doel voordat je stops toevoegt. Na directe aanpassing van destinationQueue moet je checkDestinationQueue aanroepen; goToFloor verwerkt gewone verzoeken al zelf.