ทดสอบการตัดสินใจของผู้ควบคุมก่อนที่จะเพิ่มนโยบายการกำหนดเส้นทาง
เริ่มต้นด้วย JavaScript ใน ฟังก์ชัน init และ update ของเกม แล้วกด Start เพื่อสังเกตการจำลอง ใช้การอ้างอิง API ในเกมสำหรับพฤติกรรม เหตุการณ์ idle และ goToFloor ที่แน่นอน แบบฝึกหัดแรกคือการทำความเข้าใจเมื่อลิฟต์เดินเบาได้รับงานถัดไป ดูเหตุการณ์นั้นและการเคลื่อนไหวที่เกิดขึ้นก่อนที่จะเพิ่มเงื่อนไขต่างๆ เพื่อให้คุณสามารถอธิบายว่าส่วนใดของผู้ควบคุมที่ออกคำขอ
จากนั้นตรวจสอบจุดหมายปลายทางของผู้โดยสาร การเคลื่อนไหวเพียงอย่างเดียวไม่ได้หมายความว่าผู้โดยสารจะได้รับการบริการ อ่านเหตุการณ์ floor_button_pressed ในข้อมูลอ้างอิงและเปรียบเทียบคำขอกับเส้นทางที่คุณสังเกต หากมีลิฟต์หลายตัววิ่งซ้ำเส้นทางเดียวกัน บางคิวอาจยังรออยู่ สร้างจากตัวควบคุมขนาดเล็กที่คุณเข้าใจ แทนที่จะคัดลอกนโยบายที่ซับซ้อน และสมมติว่านโยบายนั้นตอบสนองความต้องการของผู้โดยสารหรือเป้าหมายการรอของความท้าทายในปัจจุบัน
เปรียบเทียบการเปลี่ยนแปลงโค้ดกับเป้าหมายที่แท้จริงของภารกิจท้าทาย
ก่อนเริ่มการจำลอง ให้อ่านเงื่อนไขการผ่านและเลือกพฤติกรรมหนึ่งอย่างที่จะตรวจสอบ เช่น เวลาว่าง การหยุดซ้ำ หรือผู้โดยสารที่รออยู่ในชั้นใดชั้นหนึ่ง เปลี่ยนการตัดสินใจหนึ่งครั้งแล้วดำเนินการอีกครั้ง ลิฟต์ที่เคลื่อนที่บ่อยขึ้นไม่ได้รับประกันว่าโปรแกรมควบคุมจะบรรลุเป้าหมายของโจทย์ เปรียบเทียบคิวที่มองเห็นและแสดงผลกับวัตถุประสงค์ แทนที่จะใช้การเคลื่อนไหวเป็นสัญญาณเดียวของความสำเร็จ
เมื่อทำการแก้ไข destinationQueue โดยตรง ให้ปฏิบัติตามข้อกำหนดของการอ้างอิงเพื่อเรียก checkDestinationQueue เพื่อให้คิวที่แก้ไขมีผล คำขอ goToFloor ปกติจัดการปลายทางที่อยู่ในคิวแล้ว รักษาแนวทางเหล่านั้นให้ชัดเจนในขณะทำการดีบัก ศูนย์นี้อธิบายการจำลองการเขียนโปรแกรมเบราว์เซอร์ ไม่ใช่ซอฟต์แวร์สำหรับลิฟต์จริงหรือระบบความปลอดภัยในการผลิต ไม่ได้รับประกันว่าผู้ควบคุมหนึ่งคนจะผ่านทุกความท้าทาย ใช้เอกสารประกอบ API ที่แน่นอนภายในเกม จากนั้นบันทึกเหตุการณ์และการเปลี่ยนแปลงเส้นทางที่ปรับปรุงการทดสอบเฉพาะที่คุณเพิ่งดำเนินการ
หากต้องการรีวิวที่เป็นรูปธรรม ให้ดูชั้นที่มีคิวในขณะที่ลิฟต์ไม่มีการใช้งาน ระบุว่าตัวจัดการรายใดที่ออกคำขอ goToFloor ถัดไป และคำขอนั้นให้บริการผู้โดยสารที่รออยู่หรือส่งลิฟต์ไปที่อื่นหรือไม่ เปลี่ยนตัวเลือกเส้นทางหนึ่งรายการ จากนั้นเปรียบเทียบผลลัพธ์ที่ท้าทาย หากมีตัวจัดการหลายตัวแข่งขันกัน ให้ลดความซับซ้อนของคอนโทรลเลอร์จนกว่าคุณจะอธิบายลำดับคำขอได้ ใช้การอ้างอิง API สำหรับเหตุการณ์ที่รองรับ การสังเกตหนึ่งคิวและการตัดสินใจทีละครั้งจะทำให้คุณมีหลักฐานสำหรับการแก้ไขโดยไม่ต้องอ้างว่าเป็นตัวควบคุมสากลที่เหมาะสมที่สุด
เคล็ดลับและกลยุทธ์สำหรับ Elevator Saga
เลือกเคล็ดลับที่อยากฝึกในรอบถัดไป รายการนี้ไม่เปลี่ยนแปลงเกมหรือบันทึกความคืบหน้าในการเล่น
คำถามและคำตอบเกี่ยวกับ Elevator Saga
ฉันเขียนด้วยภาษาอะไร?
ตัวควบคุมใช้รหัส JavaScript โดยมีฟังก์ชัน init และ update ในโปรแกรมแก้ไขเกม
เครื่องนี้ใช้งานลิฟต์จริงได้หรือไม่?
ไม่ มันเป็นการจำลองการเขียนโปรแกรมทั้งหมดภายในเกมบนเว็บเบราว์เซอร์
ฉันสามารถใช้มันเพื่อฝึกฝนการเขียนโค้ดได้ไหม?
ใช่ โดยเฉพาะอย่างยิ่งการควบคุมแบบขับเคลื่อนด้วยเหตุการณ์และการทดสอบการเปลี่ยนแปลงเล็กๆ น้อยๆ เกมนี้สร้างขึ้นจากโครงการ Elevator Saga ที่ได้รับอนุญาตภายใต้ MIT ของ magwo; มันไม่ใช่หลักสูตรการรับรอง
ทำไมผู้โดยสารยังรอทั้งที่ลิฟต์เคลื่อนที่?
การวิ่งเส้นทางซ้ำไม่ตอบทุกชั้นที่ร้องขอโดยอัตโนมัติ จัดการ floor_button_pressed และใช้ goToFloor สำหรับจุดหมาย เปรียบเทียบคิวกับเป้าหมายก่อนเพิ่มจุดจอด ถ้าแก้ destinationQueue โดยตรงต้องเรียก checkDestinationQueue เพื่อใช้การเปลี่ยนแปลง ส่วน goToFloor จัดการคำขอปกติอยู่แล้ว