4399小游戏—宠物连连看经典版2—游戏辅助脚本VanHope

期末的时候看到一篇博客,写的宠物连连看的辅助脚本,感觉很有意思,就自己跟着博客自己实现了一遍,开发过程中遇到了一些问题,也体会到了解决问题的乐趣,遂在此记录一下。

这篇博客给出了完整版的代码,大体上我是根据他的思路实现的,只有部分细节按照我自己的想法做了修改。

具体流程如下:

窗口句柄:简单理解就是窗口的id,可以根据这个id识别已经打开的窗口

在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口最小化等等。

--《百度百科》

可以使用winspy,spy++等工具获取某个窗口的句柄。

使用360浏览器打开宠物连连看小游戏后,我用winspy获取到的句柄是"宠物连连看经典版2小游戏,在线玩,4399小游戏-360安全浏览器10.0"

获取到窗口的句柄之后,就可以使用python的库操纵窗口了,使用的库是win32gui

#获取窗口的句柄self.hwnd=win32gui.FindWindow(0,wdname)ifself.hwnd==0: print('nosuchhwnd') exit(1)#将该窗口显示在最前面win32gui.SetForegroundWindow(self.hwnd)执行之后,连连看的窗口就显示到最前面了,下一步就可以截图了

主要使用到的库是PIL的ImageGrab,PIL现在官网上不去,pillow好像和PIL功能是差不多的,文档可以参考pillow的。

这一步的重点是要计算出每个图标的左上角、右下角的坐标,准确将其从截图中分割出来。

'''获取屏幕截图,并将图标分割'''defscreen_grab(self):#获取整个屏幕截图image_grab=ImageGrab.grab()#获取截图中间所有动物图标的截图box=(399,305,1247,873)animals_iamge=image_grab.crop(box)#将每个动物图像分割,得到图像矩阵images_list=[]offset=71#将截图用windows自带的画图打开,就可以查看某个点的位置, #计算出每个图标的大小大约是71px,不是特别准确,但是基本可以分割出每个图标了x0=0y0=0foriinrange(8):images_row=[]forjinrange(12):#小图标左上角的坐标x1=x0+j*offsety1=y0+i*offset#小图标右下角的坐标x2=x1+offsety2=y1+offset#5px的偏移是为了去掉小图标周围,只保留中间,这样区分不同的图片更容易images_row.append(animals_iamge.crop((x1+5,y1+5,x2-5,y2-5)))images_list.append(images_row)returnimages_list3、将图标矩阵转换成数字矩阵这一步是比较复杂的,主要的目标是将每个图标转换成一个数字,要求相同的图标数字相同。

这里分为两步:

首先将每个图标转成一个灰度图标,然后将这个灰度图标转换成01字符串。

然后比较两个字符串各个位置0、1的区别,记录不同的个数,然后设定一个阈值,不同的个数如果低于这个阈值(即两个图标相差不多),可以认为它们是同一种图标,否者不是。

比较麻烦的是阈值的确定,只能将两个图片的灰度值慢慢比较,找到一个threshold,高于这个threshold能区分为两个不同的图片;低于这threshold保证两个图标相同。

我用到的一个技巧就是,在创建图标矩阵的时候(上一步),每个图标截取的时候往中间多收缩了5px,这样就可以去掉截取的图标周围的一些"杂质",更容易确定阈值。

[[00000000000000][01223245677180][0949108311231150][06126312941281130][0312101112385966100][07471148125127520][01014211766115530][011958421091011990][010127112107641880][00000000000000]]4、判断两个点是否可以点击消除根据游戏规则,对一个点(x1,y1)得到它可以直接到达的点的集合list1,所谓直接到达,指的是从(x1,y1)出发上下左右连续为0的点;对于(x2,y2)得到list2,然后判断list1中每个点和list2中每个点有没有可以直接到达(即两个点在同一行或同一列,且中间都是0),如果存在这样地点,就说明(x1,y1)、(x2,y2)可以到达。

THE END
1.宠物连连看3.1宠物连连看3.1,宠物连连看的最新版本。在功能上有了不少的升级和改变,难易程度上也做了更合适的修改。使你玩起来的时候不用那么伤脑筋了!玩友们来吧,体验新版连连看! 游戏目标 在有限的时间里,用我们智慧消除相连卡片,通过9关卡获得最终的胜利 如何开始 ...https://www.doyo.cn/flash/game/526999
2.连连看下载连连看合集下载游戏介绍游戏《连连看》,只要将相 点击下载 果蔬连连看单机小游戏 中文 更新时间:2015-09-18 果蔬连连看是一款以蔬菜水果为主题的连连看类型的小游戏。很耐玩也很受大家的欢迎。 适合的群体比宠物连连看、水晶连连看、麻将连连看等任何一个连连看小游戏的分类都要广,其中原因有二点: 一、"果蔬连连看"同样具备其它...http://www.downcc.com/p/h1_K2376.html
3.用Python做一个游戏辅助脚本,完整编程思路分享用Python做一个游戏辅助脚本,完整编程思路分享一、说明简述:本文将以4399小游戏《 宠物连连看经典版2 》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。运行环境:Win10/Py... https://blog.csdn.net/ityard/article/details/116036290 给本帖投票 ...https://bbs.csdn.net/topics/603227911
4.宠物连连看3.1H5宠物连连看3.1H5html5游戏4399H5游戏宠物连连看3.1H5版本强势来袭!此款连连看小游戏在难易程度上做了修改,相对于其他版本的连连看简单了很多,使你玩起来的时候不用那么伤脑筋了! 提供商: 技术部FLASH 大家也喜欢 更多 拯救镜中女孩 灵剑仙师 女儿养成记 寻找高智力男孩 游戏评论共条 查看更多评论>> 游戏评论共0条 加载失败,点此刷新...https://h.4399.com/zzy/231124.htm
5.宠物连连看宠物连连看安卓版下载宠物连连看游戏推荐连连看 消除 闯关 成功将全部可爱的小动物们连线消除吧! 扫描二维码下载游戏 基本信息 大事件02月13日15:00试玩上线全部 游戏简介 《宠物连连看》是一款有趣的消除类休闲游戏,关卡丰富画风精简可爱,点击两个相同的两个小动物即可将它们消除,在规定时间内将游戏中的动物消除完即可通关。关卡内还有炸弹、洗牌和提示等...https://a.4399.cn/game-id-256626.html
1.安卓连连看单机版下载手机连连看小游戏大全手机连连看游戏一直都是大家必备的休闲精品,这类游戏题材多样,玩不腻,最适合无聊的时候打发时间了,这个小编深有体会,此次腾牛安卓网游戏速递特别为大家免费提供各类好玩的安卓手机连连看游戏免费下载,保证不会让您失望.https://www.qqtn.com/az/azllkyx/
2.4399连连看下载4399连连看2.54399连连看是一款集合几乎所有连连看游戏的集合版本:4399连连看包括以下连连看游戏 宠物连连看3.0,宠物连连看2.6,QQ连连看,厨房连连看等众多连连看游戏 。4399连连看是一款下载到本地就可以直接游戏的软件:4399连连看不需要连接到网络就可以在本地直接游戏的小游戏软件。4399连连看下载 ...https://xiazai.zol.com.cn/detail/35/349674.shtml
3.纽扣连连看【游戏简介】可能你玩过了4399小游戏中水果连连看,宠物连连等各式各样的连连看,但你应该还没看过全是纽扣的连连看吧,千万别看花了眼哦,纽扣连连操作上很简单点击两个相同图标,如果图标间的连线转折不超过两次并且不经过其他图标,即可消除哦。游戏的最终目标是消除更多https://apps.apple.com/cm/app/%E7%BA%BD%E6%89%A3%E8%BF%9E%E8%BF%9E%E7%9C%8B-4399%E5%B0%8F%E6%B8%B8%E6%88%8F%E8%BF%9E%E8%BF%9E%E7%9C%8B%E7%BB%8F%E5%85%B8%E5%8D%95%E6%9C%BA%E7%89%88/id1068198476
4.连点器安卓手机版一、说明简述:本文将以4399小游戏《 宠物连连看经典版2 》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。运行环境:Win10/Python3.5。主要模块:win32gui(识别窗口、窗口置顶等操作)、PIL(屏幕截图)、numpy(创建矩阵)、operator(比较值)、pymouse(模拟鼠标点击)。https://blog.51cto.com/topic/liandianqianzhuoshoujiban.html
5.果蔬连连看4399权威文章果蔬连连看4399是当下最为流行的单机小游戏中的绞绞者,其游戏玩法简单,操作性强,而且很容易吸引玩家的注意力,也正是因此才使得果蔬连连看4399受到广大玩家的喜爱,“果蔬”是“水果”和“蔬菜”的简称,“果蔬连连看”顾名思义就是以“水果”和“蔬菜”两种或其中一种图片为主的一个“连连看小游戏”,玩法规则简单容...https://www.cndzys.com/yssc/rdxw/20110915_53253.html
6.如何让Javascript程序模拟鼠标点击?小程序如何解决重复点击? 小程序有非常蛋疼的问题,没有很好的优化事件机制,导致重复点击会触发多次(如果打开页面,快速多次点击,会打开多个重复的页面,返回时就会关掉一个还有一个...)...网上很多都是给按钮或者事件按钮添加disabled属性,通过事件改变值,并判断此时能否被点击。经过本人测试,在开发者工具上面是可以的。https://cloud.tencent.com/developer/information/%E5%A6%82%E4%BD%95%E8%AE%A9Javascript%E7%A8%8B%E5%BA%8F%E6%A8%A1%E6%8B%9F%E9%BC%A0%E6%A0%87%E7%82%B9%E5%87%BB%EF%BC%9F