系列文章
Java版本的基于计算机视觉的跃动小子保卫主公自动通关计划之图片分割篇
图片分类篇,执行计划生成篇,执行篇等后续篇章持续更新中,欢迎关注
文章目录
- 系列文章
- Java版本的基于计算机视觉的跃动小子保卫主公自动通关计划之整体思路篇
- 构建二维数组
- 构建消除时形态
- 7个元素的消除时形态
- 6个元素的消除时形态
- 5个元素的消除时形态
- 4个元素的消除时形态
- 3个元素的消除时形态
- 获取消除前形态
- 获取最小区域
- 计算最小步数和移动过程
- 评估最佳执行计划
- 执行计划
- 核心技术
- 总结
Java版本的基于计算机视觉的跃动小子保卫主公自动通关计划之整体思路篇
这里采用逆向思维,先得到所有消除时形态,再推演可能的消除前形态;计算从消除前形态到消除形态的最小移动步数和记录详细移动过程;匹配可消除形态,匹配成功按照之前记录的详细步骤移动即可还原到消除时形态
构建二维数组
将保卫主公区域分割成6*6=36个小图,对小图分类,可以使用直方图,图片指纹等计算图片相似度,最终构建成一个二维数组
构建消除时形态
在保卫主公中可消除形态有3个元素,4个元素,5个元素,6个元素,7个元素(应该是可消除元素最多的形态)
7个元素的消除时形态
int[][] p7 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 1, 1},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 0, 0},
};
6个元素的消除时形态
int[][] p6_1 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 1},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 0, 0},
};
5个元素的消除时形态
int[][] p5_1 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 0, 0},
};
int[][] p5_2 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
};
int[][] p5_3 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 0},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 0, 0},
};
4个元素的消除时形态
int[][] p4_1 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
};
3个元素的消除时形态
int[][] p3_1 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
};
以及对于的旋转90°,180°,270°,水平翻转,垂直翻转
获取消除前形态
对消除形态移动一步,两步,三步,四步…获取可能的消除前形态的所有组合
比如7个元素移动1步的消除前形态之一为
int[][] p7 = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0},
{0, 1, 1, 0, 1, 1},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0},
{0, 0, 0, 0, 0, 0},
};
获取最小区域
获取可消除的最小区域和对应的消除时的最小区域,以7个元素移动一步为例,可消除区域的最小区域为
int[][] p7 = {
{0, 0, 1, 0, 0},
{1, 1, 0, 1, 1},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0}
};
对应的消除时形态为
int[][] p7 = {
{0, 0, 0, 0, 0},
{1, 1, 1, 1, 1},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0}
};
计算最小步数和移动过程
计算从可消除形态到消除形态的最小步数并记录具体的移动过程,此时就得到了一系列执行计划
评估最佳执行计划
-
判断步数是不是为1,要不要使用箱子
-
要不要合成箱子(箱子3个合成比较划算,所以需要单独计算)
-
要不要丢张飞与木头
-
用执行计划中的消除前形态去6*6的二维数组中匹配(核心算法为在大数组中找小数组),得到一系列可执行计划,每个计划的消耗的步数和获取的步数不一样,评估出最佳执行计划
最终获得的步数=获得步数-消耗步数
获得步数=(消除步数-3)*3的x次方
x为消除元素的等级,材料为0
执行计划
利用robot控制鼠标移动来执行最佳执行计划
核心技术
- 图片分割
- 图片相似度计算
- 生产计划时的算法
- 识别步数时的文本识别
- Robot类的一些操作
总结
通过构建不同的消除形态、推演消除前形态、评估最优消除计划,并结合自动化执行,这一过程可以为消消乐游戏生成最优的走法策略,帮助玩家高效达成目标。