今天加了好多功能,代码量增加了将近一倍。这都要感谢星期六,还有那位每天坚持不懈的玩家。
之前写的程序,仅仅是升级资源建筑。现在看来不够了,我需要它能够自动对村庄内的建筑进行升级。
对村庄内的建筑进行升级有几个难点:
1、建造位置大都不是固定的,集结点除外。
2、有被完全拆掉的可能,拆掉后要找地方重新建起来,而资源建筑位置是固定的。
3、建筑有依赖性,比如没有集结点就不能造兵营。
为了村庄内外两方面的升级能够统一进行,我制定了这样的策略框架:
首先定义村庄内建筑的“最小需求”:
如果当前有建筑低于最小需求,则优先建造需求的建筑。这些需求满足了之后,再去升级资源建筑。
如果出现资源或人口不足(那就表示被打得很惨了),程序就会跳过最小需求,然后还是会去升级资源建筑。
资源建筑的升级策略很简单,就是捡级别最低的来升级。
现在,不论村庄被打的多惨,TravianDaemon 也能很快将其恢复成基本的样子。毕竟前几级建筑造起来还是很快的。
我还打算实现自动造兵,以后再说。
另外,我还实现了“邮件命令”。TravianDaemon 运行在公司机器上,只要我通过手机发送 email 到公司邮箱, TravianDaemon 就会执行指定的命令。