这是一个编程游戏!
你的任务是通过使用JavaScript编写程序来控制电梯(1或n)的运动。 .
目标是以高效的方式运送乘客。 根据你的表现,你可以逐渐挑战更加困难的关卡。 足够优秀的程序才能完成所有挑战。
在游戏视图下方输入窗口中输入代码,然后点击 “应用” 按钮 运行代码。
你可以通过按下或按钮调整程序运行速度。
如果程序出现错误,可以使用浏览器开发工具进行调试。
如果想重新开始编码,点击“重置”按钮将代码恢复到初始化状态。
如果你喜欢使用Sublime Text等文本编辑器,请随意在那里编辑代码,并将其粘贴到游戏编辑器中。
所有代码会自动保存在本地存储中,所以不用担心 - 即使意外关闭浏览器也不会丢失。
每个程序必须声明一个包含至少两个名为init 和 update函数的对象,就像这样::
{
init: function(elevators, floors) {
// Do stuff with the elevators and floors, which are both arrays of objects
},
update: function(dt, elevators, floors) {
// Do more stuff with the elevators and floors
// dt is the number of game seconds that passed since the last time update was called
}
}
这些函数将在运行期间由系统调用。
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() { ... } );
Property | Type | Explanation | Example |
---|---|---|---|
goToFloor | function | 让电梯排队进入指定楼层。如果您将true指定为第二个参数,则电梯将直接到达该楼层,然后再前往任何其他排队的楼层。 |
|
stop | function | 清除目的地队列,如果电梯正在移动,请停止电梯。请注意,您通常不需要停止电梯-它用于具有运输中重新调度逻辑的高级解决方案。另外,请注意电梯可能不会停在某一层,所以乘客不会下车。 |
|
currentFloor | function | 获取电梯当前所在的楼层号。 |
|
goingUpIndicator | function | 获取或设置上升指示,该指示会影响在楼层停靠的乘客的行为。 |
|
goingDownIndicator | function | 获取或设置下行指示,该指示会影响在楼层停靠的乘客的行为。 |
|
maxPassengerCount | function | 获取可同时占用电梯的最大乘客数。 |
|
loadFactor | function | 得到电梯的载重系数。0表示空,1表示满。随着乘客体重的变化而变化,这不是一个精确的测量。 |
|
destinationDirection | function | 得到电梯当前要移动的方向。可以是"up", "down"或"stopped"。 | |
destinationQueue | array | 当前目的地队列,即电梯计划到达的楼层号。如果需要,可以修改和清空。注意,您需要调用checkDestinationQueue()以使更改立即生效。 |
|
checkDestinationQueue | function | 检查目的地队列中是否有要转到的新目的地。注意,只有在显式修改目标队列时才需要调用此方法。 |
|
getPressedFloors | function | 获取当前按下的层数作为数组。 |
|
Event | Explanation | Example |
---|---|---|
idle | 当电梯完成了所有的任务并且没有做任何事情时触发。 |
|
floor_button_pressed | 当乘客在电梯内按下按钮时触发。 |
|
passing_floor | 电梯将要通过某层时触发。这是决定是否在这一层停止的好时机。注意,此事件不会在目的层触发。方向不是“up”就是“down”。 |
|
stopped_at_floor | 当电梯到达某一楼层时触发。 |
|
Property | Type | Explanation | Example |
---|---|---|---|
floorNum | function | 获取楼层对象的楼层号。 |
|
Event | Explanation | Example |
---|---|---|
up_button_pressed | 当有人在楼层按下向上按钮时触发。请注意,如果乘客未能进入电梯,他们将再次按下按钮。 |
|
down_button_pressed | 当有人在楼层按下向下按钮时触发。请注意,如果乘客未能进入电梯,他们将再次按下按钮。 |
|