这是一款关于编程的小游戏!
您的任务是通过编写 JavaScript 程序来使得电梯移动。
目标是用最简单,最快速的方法来运送人员。
这将取决于您的程序,您可以在更困难的挑战中取得进步。
只有最优秀的程序才能够完成所有的挑战!
在游戏视图下方的输入窗口中输入代码,然后点击运行按钮开始挑战。
您可以通过点击 按钮或者 按钮来增加或者减少时间速度。
如果程序包含错误,则可以使用web浏览器中的开发人员工具尝试并调试它。
如果要重新输入带,请点击重置按钮。这将让您的代码恢复到一个有效但过于简单的实现。
如果您有最喜欢的文本编辑,例如 Sublime Text, 请随意编辑代码并粘贴到游戏编辑器中。
您的代码会自动保存在本地存储中,因此不要担心,如果您意外关闭浏览器,它不会消失。
代码必须声明一个对象,该对象至少包含两个调用的函数 init 和 update。 就像下面一样:
{
init: function(elevators, floors) {
// 用 elevators 和 floors 做些事情,它们都是阵列对象
},
update: function(dt, elevators, floors) {
// 用 elevators 和 floors 做更多的事情
// dt 是自上次调用更新以来经过的游戏描述
}
}这些函数将在挑战期间由游戏调用。
init 将在挑战开始时调用, 而 update 在挑战中不断重复。
通常情况下,您的大部分代码是放在 init 函数中,请设置事件侦听器和逻辑的步骤。
elevator.goToFloor(1);if(elevator.currentFloor() > 2) { ... }可以监听事件,如在楼层暂停或按下按钮时。
elevator.on("idle", function() { elevator.goToFloor(0); });elevator.on("floor_button_pressed", function(floorNum) { ... } );floor.on("up_button_pressed", function() { ... } );| 属性 | 类型 | 解释 | 示例 |
|---|---|---|---|
| goToFloor | function | 将电梯排到指定楼层号。如果指定true作为第二个参数,电梯将直接到达该楼层,然后到达任何其他排队的楼层。 | |
| stop | function | 清除目的地队列,并在电梯移动时停止电梯。请注意,您通常不需要停止电梯-它适用于具有运输中重新安排逻辑的高级解决方案。另外,请注意,电梯可能不会停在楼层,因此乘客不会下车。 | |
| currentFloor | function | 获取电梯当前所在的楼层号。 | |
| goingUpIndicator | function | 获取或设置上升指示器,该指示器将影响乘客在楼层暂停时的行为。 | |
| goingDownIndicator | function | 获取或设置下降指示器,该指示器将影响乘客在楼层暂停时的行为。 | |
| maxPassengerCount | function | 获取可以同时占用电梯的最大乘客数。 | |
| loadFactor | function | 获取电梯的负载系数。0表示空,1表示满。随乘客重量的变化而变化,但这不是一个精确的测量值。 | |
| destinationDirection | function | 获取电梯当前要移动的方向。可以是“向上”、“向下”或“停止”。 | |
| destinationQueue | array | 当前目的地队列,表示电梯计划前往的楼层号。如果需要,可以修改和清空。请注意,您需要调用checkDestinationQueue()以使更改立即生效。 | |
| checkDestinationQueue | function | 检查目标队列中是否有任何要转到的新目标。请注意,只有在显式修改目标队列时才需要调用此函数。 | |
| getPressedFloors | function | 以数组形式获取当前按下的楼层编号。 | |
| 事件 | 解释 | 示例 |
|---|---|---|
| idle | 当电梯已完成所有任务且未执行任何操作时触发。 | |
| floor_button_pressed | 当乘客按下电梯内的按钮时触发。 | |
| passing_floor | 在电梯通过楼层之前触发。这是决定是否在那一层停下来的好时机。请注意,目标楼层不会触发此事件。方向为“向上”或“向下”。 | |
| stopped_at_floor | 电梯到达楼层时触发。 | |
| 属性 | 类型 | 解释 | 示例 |
|---|---|---|---|
| floorNum | function | 获取楼层对象的楼层编号。 | |
| 事件 | 解释 | 示例 |
|---|---|---|
| up_button_pressed | 当有人按下楼层的向上按钮时触发。请注意,如果乘客无法进入电梯,他们将再次按下按钮。 | |
| down_button_pressed | 当有人按下地板上的向下按钮时触发。请注意,如果乘客无法进入电梯,他们将再次按下按钮。 | |