Yönlendirme politikası eklemeden önce bir denetleyici kararını test edin
Oyunun init ve update işlevleri bölümünde JavaScript ile başlayın ve simülasyonu gözlemlemek için Başlat'a basın. Tam idle olayı ve goToFloor davranışı için oyun içi API referansını kullanın. İlk alıştırma, boşta kalan bir asansörün bir sonraki görevini ne zaman alacağını anlamaktır. Birkaç koşulu eklemeden önce bu olayı ve sonuçta ortaya çıkan hareketi izleyin, böylece denetleyicinin hangi bölümünün bir istek yayınladığını açıklayabilirsiniz.
Daha sonra yolcu varış noktalarını inceleyin. Hareket tek başına yolculara hizmet verildiği anlamına gelmez. Referanstaki floor_button_pressed olayını okuyun ve istekleri gözlemlediğiniz rotayla karşılaştırın. Birden fazla asansörün aynı rotayı tekrarlaması durumunda bazı kuyruklar yine de bekleyebilir. Karmaşık bir politikayı kopyalamak ve bunun mevcut zorluğun yolcu veya bekleme süresi hedefini karşıladığını varsaymak yerine, anladığınız küçük bir denetleyiciden oluşturun.
Bir kod değişikliğini mücadelenin gerçek hedefiyle karşılaştırın
Simülasyonu başlatmadan önce görevin başarı koşulunu okuyun ve boşta kalma süresi, tekrarlanan duraklamalar veya belirli bir katta bekleyen yolcular gibi incelenecek bir davranış seçin. Bir kararı değiştirin ve simülasyonu tekrar çalıştırın. Asansörün daha sık hareket etmesi, kontrolcünün görev hedefini karşıladığını göstermez. Hareketi başarının tek işareti olarak kullanmak yerine görünür sıraları ve görüntülenen sonuçları hedefle karşılaştırın.
Doğrudan destinationQueue düzenlerken, revize edilen kuyruğun etkili olması için referansın checkDestinationQueue çağrılması gerekliliğini izleyin; normal goToFloor istekleri zaten sıraya alınmış hedefleri işliyor. Hata ayıklama sırasında bu yaklaşımları farklı tutun. Bu merkez, gerçek bir asansör veya üretim güvenlik sistemi için yazılım değil, bir tarayıcı programlama simülasyonunu açıklamaktadır. Bir denetleyicinin her zorluğu geçeceğini garanti etmez. Oyunun içindeki API belgelerini tam olarak kullanın, ardından hangi olayın ve yönlendirme değişikliğinin az önce çalıştırdığınız testi iyileştirdiğini kaydedin.
Somut bir inceleme için, asansörün boşta kaldığı sırada kuyruğun olduğu bir katı izleyin. Bir sonraki goToFloor isteğini hangi işleyicinin yayınladığını ve bu isteğin bekleyen yolculara mı hizmet ettiğini yoksa asansörü başka bir yere mi gönderdiğini belirleyin. Bu yönlendirme seçeneğini değiştirin, ardından sorgulama sonucunu karşılaştırın. Birkaç işleyici rekabet ediyorsa, isteklerin sırasını açıklayana kadar denetleyiciyi basitleştirin. Tam olarak desteklenen etkinlikler için API referansını kullanın. Bir seferde bir kuyruğu ve bir kararı gözlemlemek, bunun evrensel bir optimal denetleyici olduğunu iddia etmeden, size revizyon için kanıt sağlar.
Elevator Saga ipuçları ve stratejisi
Sonraki turda denemek için bir ipucu işaretleyin. Bu liste oyunu değiştirmez ve oyun ilerlemesini kaydetmez.
Elevator Saga ile ilgili sorular ve cevaplar
Hangi dilde yazıyorum?
Kontrol cihazı JavaScript'yi kullanır; oyun editöründe ise init ve update işlevleri bulunur.
Bu gerçek bir asansör mü çalıştırıyor?
Hayır. Tamamen tarayıcı tabanlı bir oyunun içinde yer alan bir programlama simülasyonudur.
Bunu kodlama pratiği yapmak için kullanabilir miyim?
Evet, özellikle olay odaklı kontrol ve küçük değişikliklerin test edilmesi açısından. Oyun, magwo'nun MIT lisanslı Elevator Saga projesine dayanmaktadır; bir sertifika kursu değildir.
Asansör hareket ederken yolcular neden bekliyor?
Sabit rotayı tekrarlamak istenen tüm katları otomatik karşılamaz. floor_button_pressed olayını işleyin, hedefleri goToFloor ile verin. Durak eklemeden kuyrukları görev hedefiyle karşılaştırın. destinationQueue doğrudan değişirse checkDestinationQueue çağırın; goToFloor normal istekleri zaten işler.
Kontroller ve tam oyun talimatları
Kontroller ve tam oyun talimatları
Elevator Saga oyna