下载 App
开发日志 06|收成去哪了?把田地、货舱和金币连起来
上一篇,机器人学会了“成熟才收获”。两边的胡萝卜被收走,中间还没成熟的那一块继续生长。田里看得出变化,可是金币没有增加。
收获的胡萝卜去哪了?
这一篇,我想沿着收成的去向,把农场里的下一段工作讲清楚:收获到货舱,运到交接箱,入库后再出售。
我做了7年儿童图形化编程教学,现在也在业余时间做自己的游戏。设计这段体验时,我希望玩家能看见程序到底改变了什么。地上的作物少了,机器人的货舱多了;货物入库以后,货舱空了,箱子里有了库存;卖出之后,库存减少,金币才增加。
它们是同一批胡萝卜,在农场里经过了不同的地方。

图1|Maker实机演示:交接箱已存入4份胡萝卜,机器人货舱清空,右侧是完整的收获、入库和出售程序。
这次仍然用单行农场,把三块胡萝卜的初始生长进度设为 100%、50%、100%,并把开局自带的交接箱放在 X=2、Y=0。机器人从 X=-1 开始检查,只收成熟的两块,第三次向前移动后,正好到达箱子所在的格子。
这里的坐标有了一个具体用途:告诉机器人把货物送到哪里。
只有站在交接箱或仓库所在的格子上,机器人才能执行入库。把箱子放在远处,然后在田里直接拼一块“入库”,货物并不会自己飞过去。玩家需要先确定目标,再安排移动和交货的顺序。
还有一个值得观察的地方:入库和出售,放在巡查循环的外面。
循环里面做的是每块田都要重复的事:检查成熟状态,需要时收获,然后去下一格。等三块田都检查完,再把这一趟收成一起交出去。
如果把“入库”直接塞进这个巡查循环,机器人还站在田里时就会尝试交货,游戏会提示需要站在仓储点。若想每次收获后都回箱子,就还得安排往返路线。积木的位置换了一点,机器人执行出来的过程就可能差很多。
这次只有4份收成,基础机器人的货舱最多能装16份,装得下,适合收完再送。以后田更多,就需要检查剩余容量,安排分批入库。

图2|Maker实机演示:出售完成后,交接箱库存归零,金币从20变成36。
这趟一共收获4份胡萝卜,每份卖4枚金币。先入库,再出售,获得了 16枚游戏金币。已经收过的土地仍然保留为耕地,可以继续播种。
出售数量“4”也是这次演示的参数。换了收成数量,就要留意它是否还合适;之后还可以继续研究,怎样让程序根据库存决定出售多少。
运行时,可以留意三个地方:收获以后看货舱,入库以后看箱子,出售以后看金币。 遇到结果和预想不一样的时候,就沿着这条路线找一找:货物还在机器人身上,还是已经进了箱子?程序有没有先到箱子,再执行入库?
田地、机器人和交接箱已经能靠一段程序联系起来,收成也能换成经营所需的金币。以后还可以把收获和运输交给不同的机器人。这篇先让一台完成整趟工作,理解顺序,再考虑分工。
我理解的“涌现”,就藏在这些规则逐渐接上关系的过程中。玩家自己安排地点、顺序和分工,同样的积木,就有机会搭出不同的农场。






