0

还有其他方法可以使用条件事件来监控停车位吗?最终目标是在事件输出日志中查看汽车何时停放以及停在何处。我创建了一个事件,它调用了一个函数,该函数在每个停车位中运行一个循环,并在被占用的位置返回 true。我想在汽车停车但循环导致模拟冻结时触发此事件。

Function(){
for(int i = 0; i<29; i++) //29 = number of parking spaces
    {
        if(parkingLot2.getCarOnSpace(i) != null) //if spot i taken
        {
            return true; 
            //true sent back to event, is then triggered
        }       
    }
return false;
}

Event
condition: Function();
Action: event.restart();
4

1 回答 1

1

因此,首先 event.restart() 函数仅适用于事件具有触发类型:超时和模式:用户控制,否则您的 event.restart() 函数什么也不做......

其次,您不需要在条件事件上调用您的函数,而是在停车场的那一刻......您可以在 carMoveTo 块的“退出”动作上执行此操作。

使用 nSpaces 而不是 29 可以更好地完成您的功能:

for(int i = 0; i<parkingLot2.nSpaces(); i++)
    {
        if(parkingLot2.getCarOnSpace(i) != null)
        {
            return true; 
        }       
    }
return false;

您可以使用类似的函数来了解汽车停在哪个空间,但您需要有一个单独的数组来收集有关哪些空间是空闲的信息,因为parkingLot 对象没有该功能。想象一下,您有一个大小为parkingLot2.nSpaces() 的数组和所有以false 开头的布尔元素,因为所有停车位都是免费的。每当您的汽车进入停车位时,您都使用相同的函数,但您在该特定索引中将数组设置为 true,而不是“返回 true”。当汽车退出时,您必须将数组设置为 false。

于 2018-04-05T00:12:43.493 回答