第125章:采集精灵(2 / 3)
仔细思索一番,其实这个程序设计难度并不高。大致思路就是:在野外地图按照一定的路线巡逻,搜索可以采集的药材的位置,然后前往目标附近,实施采集动作。
如何识别野外地图的药材生长的位置?药材在地图上是随机生长的。因此,需要程序灵活判断。这里的解决方案,基于对服务器返回的实时数据的解读。
按照孙轶民在光潋开发游戏的实践中了解到的网游运行的工作原理,角色接受周围视野范围内的信息的是实时动态的。
具体来说:随着角色在地图上的移动,以角色为中心的附近一定距离范围内视野范围内的实时情况会以数据形式从服务器发送到客户端,这些数据包括附近的玩家角色,怪物,资源等等信息。
客户端根据这些数据,动态更新玩家角色视野范围内的图形内容。
在这些数据信息中自然可以找到药材位置的相关内容。基于黎允儿提供的数据解码模块,做到这一点并没有障碍。
获取到药材的位置信息后,程序便可以通过发送模拟的键盘和鼠标消息,操纵角色移动到目标位置,并实施采集动作。
那么还要解决如何持续采集的问题。
由于药材被采集之后需要一段时间后才能重新生长出来,因此,如果长时间在一个位置附近采集,必然最终会导致视野范围内所有药材被采集完毕。此时,可以让程序驱动角色移动到另一片区域。
那么如何选择移动方向?可以随机选择一个方向直线前进,直到视野范围内出现可以采集的药材为止。
当然,这样的搜索方式有些笨,效率不一定高。不过作为第一版程序,先采用这个笨办法也无妨,后续可以改进。
程序设计的大致思路就是如此。
关于采集的具体过程,程序面临两个问题需要解决:一是采集药材的过程中会有小怪骚扰纠缠,二是有可能容易遭遇敌对玩家攻击。三是野外也有一定的小概率出现精英怪物,以及周日出现的世界boss。
关于第一个问题,相对于襄王的战力水平而言,野外的普通怪物对人物攻击造成的伤害非常有限,不会致命,襄王原本可以不用理会。但问题是,采集一颗草药的动作过程,需要35秒的时间,在这个时间内,如果遭到野外小怪的攻击,则动作被打断则会导致采集失败。所以程序要做的是:如果检测到遭到角色正在遭受小怪骚扰攻击,那么先启动战斗功能杀死怪物。
这里的战斗功能设计并不难,因为需要对付的是战斗力不高的普通小怪,不需要讲究战斗策略,只要简单的按顺序循环施放所有攻击技能即可。可以照搬演奏家的“硬怼”战斗模式。
关于第二个问题,因为孙轶民的仇家不多,因此出现这个情况的概率不高。他暂时不做考虑。