是否有其他方法可以使用条件事件来监控停车位?最终目标是在事件输出日志中查看汽车停放时的位置。我做了一个事件,它调用一个函数,它在每个停车位上运行一个循环并在一个点上返回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();
答案 0 :(得分:1)
所以首先event.restart()函数仅在事件具有触发类型时才适用:timeout和mode:user control,否则你的event.restart()函数什么都不做......
其次,你需要在有条件的事件上调用你的函数,但是在停车的那一刻......你可以在&#34;退出&#34; carMoveTo块的动作。
使用nSpaces而不是29:
可以更好地完成您的功能for(int i = 0; i<parkingLot2.nSpaces(); i++)
{
if(parkingLot2.getCarOnSpace(i) != null)
{
return true;
}
}
return false;
您可以使用类似的功能来了解停放的空间,但是您需要有一个单独的阵列收集有关哪些空间是否空闲的信息,因为parkingLot对象没有该功能。 想象一下,你有一个大小为parkingLot2.nSpaces()和布尔元素的数组都以false开头,因为所有的停车位都是免费的。每当您的汽车进入停车位时,您使用相同的功能,而不是&#34;返回true&#34;在该特定索引中将数组设置为true。当汽车退出时你必须将数组设置为假。