最新动态
AI自动还原OpenCV制作的九宫格拼图游戏(附源码)
2025-01-01 14:01

学更好的别人

做更好的自己。

——《微卡智享》

本文长度为3215,预计阅读9分钟

前言

上一篇《C++ OpenCV制作九宫格拼图游戏》已经实现了制作九宫格拼图游戏,本章就来说说九宫格拼图游戏的自自动还原方法,完整的源码在文章最后链接中。

实现效果

Q1

九宫格拼图自动还原核心是什么

要完成九宫格拼图AI自动还原,最核心的就是两点

1.需要计算指定图像到对应区域的路径,并实现移动。

2.按指定路径移动的过程中遇到的可能性问题的解决方法。

01

路径规划

其实路径规划的算法上次在《趣玩算法--OpenCV华容道AI自动解题》中就已经写完了,可以点击文章看实现的原理。

上一篇也说过,这个项目创建和数字华容道项目都放在一起了,并且将路径规划的类(CalcPathPlan)和计算数字的逆序数类(CalcReverseNum)都移动到Utils文件夹下,两个项目都直接添加现在项即可。

在CalcPathPlan里最核心的两个方法

  1. InitSites-----初始化地图

  2. GetPath-----计算行动路径

调用方式

通过初始化地图方式,可以将3X3九宫格,和4X4的数字华容道或是其它的二维表格都能实现路径规划。

上图中先找到了左上角的图像,现在我们要将其移动到左上角位置

调用路径规划时,左边是传入的地图,还原的顺序就是从上到下的,所以刚开始地图中不存在任何障碍点,左边的地图都是空白色,将起点和终点两个(上图中橙色框)位置传入后,计算出了行动的路径。

上面这一步只是计算出了图像应该行动的路径,接下来具体行动方式需要我们自己实现。

已经规划好的路线,接下来按规划路径走,必须让空白格出现在图像要走的下一步位置这里重要的一点就是需要移动的图像格不能移动,实现不能移动的方法就是将其设置为地图中的障碍点后,再计算空白格到指定位置的路径规划。

按上面的方式将空白格移动过来

接下来就要按原来图像规划的路径计算下一个空白格

接上面的原理,最终将左上角的图像移动到指定位置当位置锁定后,下面路径规划时传入的地图,锁定位置就要设置成为障碍点,不允许通过了。

02

特殊处理

当上图中右上的图像需要移动上去时,在计算空白格规划路径时没有可行动的路径,如下图所示

这里就需要进行特殊步骤的处理

代码中使用了DealStep的函数将所有的特殊处理都在里面,除了像上面这种情况外,还有第二行中间和右边的图像有时也会遇到特殊情况。

上图中第二行中间图像现在也无法移动到指定位置

第二行最后面的图像也是无法移动到指定位置

处理完前两行后,第三行默认就可以按常规方式还原了,所以相对来说比4X4的数字华容道的处理方法要简单多。

源码地址

https://github.com/Vaccae/OpenCVNumPuzzles.git

码云地址点击文末的原文链接

往期推荐

 

C++ OpenCV制作九宫格拼图游戏

 

 

C++ OpenCV生成九宫格图像

 

 

制作一个Android Sqlite远程运维小工具

 
    以上就是本篇文章【AI自动还原OpenCV制作的九宫格拼图游戏(附源码)】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/quote/17683.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站https://sicmodule.kub2b.com/mobile/,查看更多   
发表评论
0评