震惊!零代码开发基于图案识别的【消除游戏】智能助手

        本项目不可用于开发商业游戏产品外挂,只作为爱好者研究技术,如将其中代码用于违法行为,所承担一切责任与本节的技术和工具无关。

=========================================================================

       在进行消除类游戏的时候,面对眼花缭乱的一盘图案,你会不会常常因为找不到操作的图标把时间损失殆尽?

     

 

       遇到这种情况,我们能不能写个智能助手来帮助我们快速的找出要消除的图案呢?

       当然可以!只要我们好好学习编程,努力研究技术,包括Python语言、图像识别,卷积神经网络,数据结构算法、相信我们一定能写得出来。

       什么?不会写代码?

       呃....

       

       好吧、那如果这样、就只好给你介绍一款新朋友了!

       666,把你的喜爱打在公屏上!

       1!2!3!上链接!

       这里是链接,请点击下载安装 InsCode AI IDE 

       好,下载安装后,我们创建一个Python项目,比如命名XXL。

       工程创建好之后,下面我们要做的,就是三步曲:

       一、对图片中的指定区域图案,按照指定的像素大小进行分割,分割出各个种类的图案并保存为分类图片。

       二、基于分类图片再对原图片的指定区域进行对比,标注出指定区域里的分类ID。

       三、写个算法根据网格的分类ID,计算出下一步操作的图案和方向。

       好,现在我们洗干净发财的小手,开始我们的第一步开发工作,首先,伸出右手食指,放到以下文字上,跟我读:

      “ 在AI IDE里,作为一个开发者,其实最重要的工作,并不是写代码,而是讲清楚需求,只要你掌握了基本的操作,就可以轻松驾驭开发工作了。当然,有时候AI也会因为能力问题,理解不准,这里你要做的,就是不断的告诉他修改。”

       读完AI开发的工作守则后,我们先准备要针对的游戏截图,实际上,在游戏中你肯定是要动态的截图的,因为....嘛。不过截了图,最终也只是一张图片,所以我们以下图为例(反正也是9X9):

        

        我们可以指定出图案所在格子区域,然后将这块截取出来,然后让它以9行9列进行分割。

        所以,我们在AI对话框中可以写到:

        “编写一个窗口程序,能够打开一张图片显示,打开后用鼠标在图片上相应位置从左上往右下拖动,松开后会提示:“是否对这个区域的图像进行分割?”,如果选是就按照9行9列分割成81个小图案文件,将每个小图案以“行号_列号.png为文件名保存到assets文件夹下。

        点击“发送”按钮后,IDE 很快为我们生成了相应的代码,运行一下main.py,这时会弹出窗口,通过菜单可以打开图片,然后在图案区域从上往下拖放,框选所有的图案,松开后会弹出提示是否进行分割。

       点击“是”后,可以在assets中看到分割出的一个个小图案。

       我们需要将每种图案保留一个就OK,比如挑几个完整光滑品相好的,重新给个分类ID命名,其它的都删掉。

       下面我们来进行第二步,继续在AI对话框中输入需求:

       “修改代码,在用鼠标框选区域时松开时去除提示和分割逻辑,改成将当前区域按照9行9列分割成81个格子图标,与assets下的1~5.png图标进行相似度对比,对比完在相应的格子上标注出相似的图标ID值。

       点击“发送”按钮后,AI就开始对需求进行分析,并按照需求对代码进行修改了,我们可以在右边看出它的思路说明,比如它选用合适的图像相似度算法(如均方误差、结构相似性等)进行对比。

      这也太厉害了~!!!

       完成修改后,点击“全部接受”,然后再次运行代码,加载图片后,框选图案区域,然后...AI果真帮我们标注了图案的ID。

       仔细对比后,发现还不太准确,错误率太高了,这肯定不行的,我们可以让AI再优化一下识别策略,比如继续输入:

       “修改图案识别算法,提升图案识别的颜色和图案准确度。

       

       AI说它这次在代码中增加了颜色直方图和边缘检测的特征提取。。。云云。

       不过、运行的时候出错了。

       反正我也看不懂,我也不敢改,就继续问吧:

运行提示: File "C:\Users\Administrator\IDEProjects\XXL\main.py", line 55, in on_button_release self.split_and_compare(self.start_x, self.start_y, end_x, end_y) File "C:\Users\Administrator\IDEProjects\XXL\main.py", line 78, in split_and_compare similarities = [self.compare_images(piece_array, asset) for asset in assets_images] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Administrator\IDEProjects\XXL\main.py", line 87, in compare_images ssim_value = ssim(img1_lab, img2_lab, multichannel=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\skimage\metrics\_structural_similarity.py", line 186, in structural_similarity raise ValueError( ValueError: win_size exceeds image extent. Either ensure that your images are at least 7x7; or pass win_size explicitly in the function call, with an odd value less than or equal to the smaller side of your images. If your images are multichannel (with color channels), set channel_axis to the axis number corresponding to the channels. 不改动整体代码功能的情况下,修改上述错误,可以考虑更换一种方法。

       发送后,代码进行了修改,这次增加了cv2模块,貌似是需要安装一下,可以在终端或CMD命令行中通过下述命令进行安装。

pip3 install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

       再次运行后,准确率杠杠的呀!

       下面,我们走到最重要的一步了,就是写算法计算下一步操作的图案和方向。

       话实话,作为一个资深的程序员,我真的很想动手写一行代码。

       但是、、、我又怕、、、我怕我一不小心,输给AI。

       

       还能咋办,就继续问吧:

        “魔镜魔镜!请告诉我,谁是这个世界上最帅的程序员?

       “修改代码,在进行框选识别图案时记录所有格子上的图案ID到一个9x9的二维数组中,在完成识别图案和显示图案ID处理后,再对所有格子的图案ID结果进行判断,判断出哪个格子的图案可以向上或向下或向左或向右交换图案后,形成的新的图案ID二维数组,能够在新位置或者原来位置上达成横向或者纵向上形成所临接的图案凑成三个或三个以上的相同图标相邻排列,将满足操作条件的图标在相应格子标识大号白色粗体的可以移动的对应方向的箭头字符,注意不要只判断当前交换到新位置后是否达成相邻排列匹配,也判断交换到老位置的相邻图案是否达成相邻排列匹配。”

        全部按受后,再次用鼠标对图片进行区域拖动,这时可以看到判断的结果用方向箭头标识出来啦!哈哈哈!

        走到这一步,其实除下的工作就是对接摄像头提供图片采样以及调优结果,并根据方向结果叫老憨移动了。

        最后祝各位玩家一通百通!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火云洞红孩儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值