Java模拟按键精灵(三)- 需求细化

花高爽
2023-12-01

需求细化

  需求文章(一)进行过描述:自动挂机检药水;药水检满后,走到NPC卖出药水;卖完药水后继续自动挂机。因为怪物等级低,装备不用考虑。
  下面把需求分解为5个Action,进行需求细化,然后提取核心功能。

  1. Action1:自动挂机检物
     检查包袱是否已满,如果满了,执行Action2.
  2. Action2:走到商人NPC附近(走到可以点到商人的位置)
     判断人物是否已走到目标位置,如果走到,执行Action3.
  3. Action3:点击商人NPC,打开卖出物品界面
     因为人物位置不确定性,不能通过固定坐标点击NPC。我是通过在屏幕中查找特定图案,找到NPC位置并点击;
     打开卖出物品界面后,执行Action4
  4. Action4:卖出包袱物品
     我是从第二行,第一个格子开始逐个卖出物品,目的是保留第一行的格子放一些其他不需要卖出道具。
     有一些物品是不能在这个NPC卖出的,需要增加卖不出物品的处理。
     如果当前格子没有物品,则停止卖出物品,这需要判断当前格子物品为空
     物品卖完后,执行Action5
  5. Action5:重新开始挂机
      循环顺序执行5个Action,就可以实现持续挂机,自动卖物品的功能。因为怪物等级低,装备问题可以不考虑。

核心功能

  1. 判断包袱是否已满:循环检查最后一个格子是否有物品
     ☆ 通过其他工具获取包袱最后一格的屏幕坐标
     ☆ 获取该屏幕坐标的像素颜色
     ☆ 检查格子对应像素颜色是否已改变,如果已改变说明有物品在这个格子里,
      也就表明包袱已满
  2. 走到商人NPC附近:打开寻路地图,点击目标点
     ☆ 通过其他工具获取目标点的屏幕坐标
     ☆ 在寻路地图上点击目标点的屏幕坐标
     ☆ 人物在游戏地图上停止,就表明人物已到达NPC附近
  3. 人物停止:取人物附近一点,循环检查这一点的颜色是否改变
     ☆ 因为人物打怪也会停止,所以设定十次颜色未变才判定人物停止
  4. 找到商人NPC:在指定屏幕区域查找商人NPC特征图形
     ☆ 走到商人NPC附近的目标点,要保证人物在商人NPC的右下角,
      那么查找商人NPC时,只需要查找屏幕左上角到人物之间区域即可
  5. 打开卖物品界面:点击商人NCP,在弹出面板上点击“卖”东西按钮
     ☆ 卖物品界面在屏幕上的固定位置,通过其他工具获取相应屏幕坐标,就可以完
       成操作
  6. 判断物品卖完:取格子中物品放到托盘上,如果托盘没变色,则表示当前格子没有物品
     ☆ 如果当前格子没有物品,则表示物品已卖完
     ☆ 为防止意外导致物品没有卖完,共卖两轮物品,每轮都先刷新包袱

总结

  通过以上需求分析,除了业务结构代码,我们需要完成以下工作

  1. 找一个获取屏幕坐标和像素颜色工具,用于收集坐标和颜色信息
     ☆ 微信截图功能,可以获取指定位置的屏幕坐标和像素颜色
  2. 实现移动鼠标到指定屏幕坐标,并单击鼠标左键的功能
     ☆ 这个功能在基本工具类中已经实现
  3. 实现在指定区域查找特定颜色或图形的功能
     ☆ 这个功能的实现在下一篇文章中介绍
      按键精灵的核心功能,本质上就是两个功能:移动鼠标到指定坐标点并单击左键,鼠标右键或双击鼠标左键;在指定区域查找特定颜色或图形以获取对应坐标;其他就是根据游戏特点,构造相应的业务逻辑。。。
 类似资料: