Hướng dẫn Elevator Saga

Elevator Saga: cách điều khiển, mẹo chiến thuật và giải đáp, kèm liên kết đến trò chơi và hướng dẫn đầy đủ.

Chơi Elevator Saga

Lập trình bộ điều khiển thang máy

Chỉnh sửa các hàm JavaScript, init và update, sau đó nhấn Bắt đầu để chạy bộ điều khiển của bạn.

Điều khiển và hướng dẫn đầy đủ

Kiểm tra sự kiện idle trước khi thêm các quy tắc định tuyến.

Bộ điều khiển dựa trên sự kiện có thể giao nhiệm vụ mới cho thang máy khi nó trở thành idle.

Điều khiển và hướng dẫn đầy đủ

Kiểm tra quyết định của một bộ điều khiển trước khi thêm chính sách định tuyến

Bắt đầu với JavaScript trong các hàm init và update của trò chơi và nhấn Start để quan sát mô phỏng. Sử dụng tài liệu tham khảo API trong trò chơi để biết hành vi sự kiện idle và goToFloor chính xác. Bài tập đầu tiên là tìm hiểu thời điểm thang máy không hoạt động nhận nhiệm vụ tiếp theo. Xem sự kiện đó và chuyển động dẫn đến trước khi thêm một số điều kiện để bạn có thể giải thích phần nào của bộ điều khiển đã đưa ra yêu cầu.

Sau đó kiểm tra các điểm đến của hành khách. Chỉ di chuyển không có nghĩa là hành khách đang được phục vụ. Đọc sự kiện floor_button_pressed trong tài liệu tham khảo và so sánh các yêu cầu với tuyến đường bạn quan sát. Nếu một số thang máy lặp lại cùng một tuyến đường, một số hàng đợi vẫn có thể chờ đợi. Xây dựng từ một bộ điều khiển nhỏ mà bạn hiểu thay vì sao chép một chính sách phức tạp và cho rằng nó đáp ứng được mục tiêu về hành khách hoặc thời gian chờ đợi của thách thức hiện tại.

So sánh thay đổi mã với mục tiêu thực tế của thử thách

Trước khi chạy mô phỏng, hãy đọc điều kiện vượt qua và chọn một hành vi để kiểm tra, chẳng hạn như thời gian nhàn rỗi, điểm dừng lặp lại hoặc hành khách đang chờ trên một tầng cụ thể. Thay đổi một quyết định và chạy lại. Thang máy di chuyển thường xuyên hơn không có nghĩa là bộ điều khiển đạt mục tiêu thử thách. So sánh các hàng đợi hiển thị và kết quả được hiển thị với mục tiêu thay vì sử dụng chuyển động làm dấu hiệu thành công duy nhất.

Khi chỉnh sửa trực tiếp destinationQueue, hãy làm theo yêu cầu của tham chiếu để gọi checkDestinationQueue để hàng đợi sửa đổi có hiệu lực; yêu cầu goToFloor bình thường đã xử lý các điểm đến được xếp hàng đợi. Giữ những cách tiếp cận đó khác biệt trong khi gỡ lỗi. Trung tâm này mô tả mô phỏng lập trình trình duyệt chứ không phải phần mềm cho thang máy thực sự hay hệ thống an toàn sản xuất. Nó không đảm bảo một bộ điều khiển sẽ vượt qua mọi thử thách. Sử dụng tài liệu API chính xác bên trong trò chơi, sau đó ghi lại sự kiện và thay đổi định tuyến nào đã cải thiện bài kiểm tra cụ thể mà bạn vừa chạy.

Để đánh giá cụ thể, hãy quan sát một tầng có hàng đợi trong khi thang máy không hoạt động. Xác định người xử lý nào đưa ra yêu cầu goToFloor tiếp theo và liệu yêu cầu đó có phục vụ hành khách đang chờ hay gửi xe đi nơi khác hay không. Thay đổi lựa chọn định tuyến đó, sau đó so sánh kết quả thử thách. Nếu có nhiều trình xử lý cạnh tranh nhau, hãy đơn giản hóa bộ điều khiển cho đến khi bạn có thể giải thích trình tự yêu cầu. Sử dụng tham chiếu API cho các sự kiện được hỗ trợ chính xác. Việc quan sát từng hàng đợi và một quyết định tại một thời điểm sẽ cung cấp cho bạn bằng chứng về sự sửa đổi mà không khẳng định rằng đó là bộ điều khiển tối ưu phổ quát.

Mẹo và chiến lược cho Elevator Saga

Đánh dấu mẹo muốn luyện ở lượt tiếp theo. Danh sách này không thay đổi trò chơi hay lưu tiến độ chơi.

Câu hỏi và câu trả lời về Elevator Saga

Tôi nên viết bằng ngôn ngữ nào?

Bộ điều khiển sử dụng JavaScript, với các chức năng init và update trong trình chỉnh sửa của trò chơi.

Đây có phải là thang máy thật không?

Không. Đó là một mô phỏng lập trình hoàn toàn nằm trong trình duyệt web.

Tôi có thể dùng nó để thực hành lập trình được không?

Đúng vậy, đặc biệt là điều khiển dựa trên sự kiện và thử nghiệm những thay đổi nhỏ. Trò chơi này dựa trên dự án Elevator Saga được cấp phép theo giấy phép MIT của magwo; đây không phải là một khóa học cấp chứng chỉ.

Vì sao hành khách vẫn đợi dù thang máy đang chạy?

Lặp một tuyến cố định không tự phục vụ mọi tầng được yêu cầu. Xử lý floor_button_pressed và dùng goToFloor cho đích đến. So hàng đợi với mục tiêu trước khi thêm điểm dừng. Nếu sửa destinationQueue trực tiếp, gọi checkDestinationQueue để áp dụng; goToFloor đã xử lý yêu cầu thông thường.

Điều khiển và hướng dẫn đầy đủ

Điều khiển và hướng dẫn đầy đủ

Chơi Elevator Saga