侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

异星工厂

Dettan
2022-01-09 / 0 评论 / 0 点赞 / 62 阅读 / 2,236 字
温馨提示:
本文最后更新于 2022-03-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
本质需求:
让信号保持稳定,待卸货站的信号保持稳定
如果发信号了,来一辆火车就灭掉信号,如果没发信号就不管.
解决掉,过一辆车,无脑发一个信号,导致总站列车需求量假高的现象
当过来满矿的真车是不会出错.
问题
识别真装货火车 : 看拉的是不是对应的矿,因为卸货站的缘故,所以车里的矿不会卸完.
看装了多少矿,或者看停了几分钟.
发1Tick信号 : 有特定信号.
存储器 : 用传送带和机械爪实现了
矿足了自动发信号 :
逻辑
flag hasTrain //车站是否有火车,true表示有
flag signaled //车站是否已经发信号表示需要火车来拉货,true表示发过了
//when 这里的when是一直并行检测,不确定顺序发生.条件满足就激活
when train come
if(train.mine==station.mine && train.mine - train.mineBefore1Tick < 0)
hasTrain = true;
when train out
hasTrain=false
when hasTrain comed to false    //由真变为假时才激活,由假变为假不行
if(signaled == true)
signaled == false;
when mine is full
if(!signaled)
signaled = true;
when hasTrain && !hasMine
关闭引导站
实现
when hasTrain comed to false 实现: 检测信号从 绿变成红的这一瞬间,然后发出一个脉冲信号.
测试1
一个矿亮灯,车站需要10    结果17  ,测试不通过.
测试2
一个矿亮灯,车站需要17    开始6:14 ,6:22结束.  结果19,不通过
总站出问题了,拆了一条火车道之后没把电线连上
测试3
一个矿亮灯,车站需要22  结果总站22,  一个矿发车32次,测试通过
测试4
一个矿亮灯,车站需要22,时速*64 , 开始时间8:14 ,8:49关闭发车,结果22,接收到信号133, 测试通过
测试5
5个矿亮灯,车站需要22,时速*64,开始时间21:20,22:10关闭发车,22:10 车辆全部到齐,5个矿亮绿灯,发车站需要1,接受到信号138,测试不通过.
测试6
3个矿亮灯,车站需要30,时速*64,开始时间21:31,        因为hasTrain=true失败,导致flag狂闪   ,测试不通过.
测试7
3个矿亮灯,车站需要22,时速*64,开始时间22:12, 结束时间22:43    结果车站需要22,测试通过
测试8
3个矿亮灯,车站需要22,时速*64,上次测试未置零,开始时间22:45, 关闭发车时间11:27,结果车站需要20,被虫子吃掉两辆火车,出现意外,测试意外
本质需求:
让信号保持稳定,待卸货站的信号保持稳定
如果发信号了,来一辆火车就灭掉信号,如果没发信号就不管.
解决掉,过一辆车,无脑发一个信号,导致总站列车需求量假高的现象
当过来满矿的真车是不会出错.
问题
识别真装货火车 : 看拉的是不是对应的矿,因为卸货站的缘故,所以车里的矿不会卸完.
看装了多少矿,或者看停了几分钟.
发1Tick信号 : 有特定信号.
存储器 : 用传送带和机械爪实现了
矿足了自动发信号 :
逻辑
flag hasTrain //车站是否有火车,true表示有
flag signaled //车站是否已经发信号表示需要火车来拉货,true表示发过了
//when 这里的when是一直并行检测,不确定顺序发生.条件满足就激活
when train come
if(train.mine==station.mine && train.mine - train.mineBefore1Tick < 0)
hasTrain = true;
when train out
hasTrain=false
when hasTrain comed to false    //由真变为假时才激活,由假变为假不行
if(signaled == true)
signaled == false;
when mine is full
if(!signaled)
signaled = true;
when hasTrain && !hasMine
关闭引导站
实现
when hasTrain comed to false 实现: 检测信号从 绿变成红的这一瞬间,然后发出一个脉冲信号.
测试1
一个矿亮灯,车站需要10    结果17  ,测试不通过.
测试2
一个矿亮灯,车站需要17    开始6:14 ,6:22结束.  结果19,不通过
总站出问题了,拆了一条火车道之后没把电线连上
测试3
一个矿亮灯,车站需要22  结果总站22,  一个矿发车32次,测试通过
测试4
一个矿亮灯,车站需要22,时速*64 , 开始时间8:14 ,8:49关闭发车,结果22,接收到信号133, 测试通过
测试5
5个矿亮灯,车站需要22,时速*64,开始时间21:20,22:10关闭发车,22:10 车辆全部到齐,5个矿亮绿灯,发车站需要1,接受到信号138,测试不通过.
测试6
3个矿亮灯,车站需要30,时速*64,开始时间21:31,        因为hasTrain=true失败,导致flag狂闪   ,测试不通过.
测试7
3个矿亮灯,车站需要22,时速*64,开始时间22:12, 结束时间22:43    结果车站需要22,测试通过
测试8
3个矿亮灯,车站需要22,时速*64,上次测试未置零,开始时间22:45, 关闭发车时间11:27,结果车站需要20,被虫子吃掉两辆火车,出现意外,测试意外
0

评论区