这是一款关于编程的小游戏!
您的任务是通过编写 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 | 当有人按下地板上的向下按钮时触发。请注意,如果乘客无法进入电梯,他们将再次按下按钮。 |
|