[Python]用python做一个游戏辅助脚本,完整思路蜗牛噢

简述:本文将以4399小游戏《宠物连连看经典版2》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。

运行环境:Win10/Python3.5。

主要模块:win32gui(识别窗口、窗口置顶等操作)、PIL(屏幕截图)、numpy(创建矩阵)、operator(比较值)、pymouse(模拟鼠标点击)。

注意点:

1、如果安装pymouse不成功或者运行报错,可以考虑先通过whl安装pyHook、然后再通过pip安装pyuserinput。

2、如果报错[ImportError:Nomodulenamed'windows'],可以修改__init__.py相应的行为windows=>pymouse.windows。

二、开发前景(随便唠叨一哈,可跳过)

游戏辅助脚本在当前环境也算是比较流行了,对于经常玩游戏人来说,适当的游戏辅助还是很有帮助的,让计算机做一些繁琐乏味的操作。当然还有更加高大上的其他操作,这里就不赘述了。对于游戏辅助脚本,能想到基本有以下两种:一是读取游戏在内存中的数据,理想的话可以做到更改游戏一些基本属性,原理和很多的外挂或破解游戏类似;二是模拟用户用户行为,模拟鼠标点击、键盘操作等。当然,由于本人从未涉及游戏辅助脚本这一领域,出于个人兴趣,学习研究一下,本文例子则是第二种,主要还是模拟用户行为,让程序代替用户操作。

三、开发流程

先看看程序运行图吧:

浏览器打开游戏窗口(单个一个窗口),游戏界面如下图所示,游戏主要界面截图需要两个坐标(左上角坐标和右下角坐标)来确定,原点一般是屏幕左上角,不确定坐标点值的同学,可以全屏截图,用编辑图片软件查看坐标值。获取窗口句柄,这里就是浏览器标题栏的标题了(右键-查看源代码-title,加上软件名)比如:“宠物连连看经典2,宠物连连看经典版2小游戏,4399小游戏www.4399.com-GoogleChrome“。获取窗口句柄就可以开始了。

总体开发思路:截取游戏主图--->分割成小图--->对比每个小图,对比图片相识度,编号存入矩阵--->对矩阵进行可连计算--->模拟点击。

3.1、获取窗口句柄,把窗口置顶

python可以使用win32gui模块调用WindowsAPI实现对窗口的操作,使用FindWindow()方法可以获取窗口的句柄(handle),需要传入两个参数,第一个为父窗口句柄(这里填0即可),第二个参数是窗口的名称(标签title-GoogleChrome)。获取句柄之后然后通过SetForegroundWindows()设置窗口在前面,这里传入游戏窗口的举报即可,代码如下:

1importwin32gui23classGameAssist:45def__init__(self,wdname):6"""初始化"""78#取得窗口句柄9self.hwnd=win32gui.FindWindow(0,wdname)10ifnotself.hwnd:11print("窗口找不到,请确认窗口句柄名称:【%s】"%wdname)12exit()13#窗口显示最前面14win32gui.SetForegroundWindow(self.hwnd)151617if__name__=="__main__":18#wdname为连连看窗口的名称,必须写完整19wdname=u'宠物连连看经典版2,宠物连连看经典版2小游戏,4399小游戏www.4399.com-GoogleChrome'2021demo=GameAssist(wdname)22demo.start()

3.2、截取游戏界面,分割图标,图片比较

根据初始化设定的左上角和右下角两个坐标,使用ImageGrab.grab()方法进行截图,传入一个元组即可,然后对这个大图进行分割,切割成一个个小图标存入到images_list数组中。

1defscreenshot(self):2"""屏幕截图"""34#1、用grab函数截图,参数为左上角和右下角左标5#image=ImageGrab.grab((417,257,885,569))6image=ImageGrab.grab(self.scree_left_and_right_point)78#2、分切小图9#exit()10image_list={}11offset=self.im_width#391213#8行12列14forxinrange(8):15image_list[x]={}16foryinrange(12):17#print("show",x,y)18#exit()19top=x*offset20left=y*offset21right=(y+1)*offset22bottom=(x+1)*offset2324#用crop函数切割成小图标,参数为图标的左上角和右下角左边25im=image.crop((left,top,right,bottom))26#将切割好的图标存入对应的位置27image_list[x][y]=im2829returnimage_list

通过上面代码切割的小图标,转成数字矩阵,如果图标已经存入image_type_list则返回这个索引,如果不存在,则在追加进去,然后当前长度就是这个新加入图标的编号,代码如下所示:

1defimage2num(self,image_list):2"""将图标矩阵转换成数字矩阵"""34#1、创建全零矩阵和空的一维数组5arr=np.zeros((10,14),dtype=np.int32)#以数字代替图片6image_type_list=[]78#2、识别出不同的图片,将图片矩阵转换成数字矩阵9foriinrange(len(image_list)):10forjinrange(len(image_list[0])):11im=image_list[i][j]1213#验证当前图标是否已存入14index=self.getIndex(im,image_type_list)1516#不存在image_type_list17ifindex<0:18image_type_list.append(im)19arr[i+1][j+1]=len(image_type_list)20else:21arr[i+1][j+1]=index+12223print("图标数:",len(image_type_list))2425self.im2num_arr=arr26returnarr

上面的getIndex就是对比图片,判断图标是否出现过(是否已存在image_type_list中,没出现则追加进去),这里使用汉明距离判断两个图片的相识度,设置阀值10,当小于阀值则认为是同一个图片,具体代码如下:

1#检查数组中是否有图标,如果有则返回索引下表2defgetIndex(self,im,im_list):3foriinrange(len(im_list)):4ifself.isMatch(im,im_list[i]):5returni67return-189#汉明距离判断两个图标是否一样10defisMatch(self,im1,im2):1112#缩小图标,转成灰度13image1=im1.resize((20,20),Image.ANTIALIAS).convert("L")14image2=im2.resize((20,20),Image.ANTIALIAS).convert("L")1516#将灰度图标转成01串,即系二进制数据17pixels1=list(image1.getdata())18pixels2=list(image2.getdata())1920avg1=sum(pixels1)/len(pixels1)21avg2=sum(pixels2)/len(pixels2)22hash1="".join(map(lambdap:"1"ifp>avg1else"0",pixels1))23hash2="".join(map(lambdap:"1"ifp>avg2else"0",pixels2))2425#统计两个01串不同数字的个数26match=sum(map(operator.ne,hash1,hash2))2728#阀值设为1029returnmatch<10

四、程序核心-图标连接算法(路径寻找)

这里仅对算法代码进行简单分析,如果对程序不好理解,可以留言,后续可以图文分析。

通过上面的开发流程,基本获取如下这样的矩阵,只要比较两个编号相同的值进行可连路径寻找,如果找到即进行模拟点击操作。这里简单介绍下游戏规则:8行乘12列游戏图标区域,外围的0其实表示寻找路径的时候可以通过,例如坐标(1,1)可以与(1,10)进行连接、(7,1)和(7,2)进行连接。

1arr=[2[0,0,0,0,0,0,0,0,0,0,0,0,0,0],3[0,1,2,3,4,5,4,6,7,2,1,1,8,0],4[0,9,3,3,10,4,7,11,7,2,3,1,6,0],5[0,6,7,4,11,5,8,1,6,5,4,2,8,0],6[0,6,2,9,6,8,9,7,12,11,3,11,11,0],7[0,5,9,8,9,2,6,11,11,3,9,2,12,0],8[0,12,5,12,5,10,5,6,5,7,12,4,3,0],9[0,1,8,10,12,9,10,4,3,7,2,1,10,0],10[0,1,4,10,8,12,10,10,9,12,8,7,11,0],11[0,0,0,0,0,0,0,0,0,0,0,0,0,0]12]

算法的思路:路径的寻找首先是寻找一个坐标的横向竖向可以直接相连的坐标集合,比如坐标p1(1,1)这样的集合有[(0,1),(1,0)],另外一个坐标p2(1,10)的可连集合为[(0,10)],然后再对p1和p2的可连坐标集合进行比较,如果集合中坐标也有可连,则表示p1和p2可连,很明显,(0,1)和(0,10)为同一行且可连,这样就表示p1和p2两点存在可连路径了,代码如下所示:

简单分析下代码实现过程:在isReachable()传入两个需要比较的坐标值,然后分别获取两个点横竖向(isRowConnect()、isColConnect())可以连接的坐标集合,最后再对集合进行遍历比较是否存在可连的,如果存在则表示传入的两个坐标是可以连接的。

THE END
1.m.cmccmiguvideo.cn/woyun/85548樱花庄的宠物女孩第二季 地下城玩家 上古卷轴5 种族 狼客黄站 tek067 洛阳电影网你懂得 寻找两把火药库房的钥匙 斗罗大陆小舞篇破解版 妻子的秘密49 暴躁CSGO女性玩家技巧 av 狼 日产幕无线码三区在线 体育生手握18CM勃起无遮图 免费不卡视频一卡二卡 高嗨肉文 宠物连连看3.1下载 热门关键...http://m.cmcc-miguvideo.cn/woyun/85548_1221411
2.recycle.devAPEC合影环节,媒体发现拜登并没有站在C位,甚至“因为迟到五分钟而不得不在第二排”,牵着泰国总理佩通坦的手,站在韩国总统尹锡悦的身后。 合影环节拜登匆匆赶到 难道拜登“靠边站”了吗? 当然有各种解读。比如美国是上一届APEC非正式会议的举办国,按说拜登不该站在如此靠后的位置,而该站在本届东道主、也就是C位...http://recycle.dev-test.cn/html/4958579.html
3.正版APP下载?v1.6.8特朗普胜选第二天美联储就降息是...此外,鲍威尔在当天的发布会上还回答了有关“总统是否拥有解职美联储主席职务权力”的问题,鲍威尔明确回答“法律不允许”。 财经媒体彭博社就此情况发表了题为“鲍威尔为捍卫美联储向特朗普发出抗议信号”的文章,展现鲍威尔有意同即将上任的美国当选总统特朗普“切割”的立场。 http://video.jspm.vip/vodtype/11181503018435.html
4.m.debede.cn/post/89043.html宠物连连看3.1下载 16处破外女出血 欲火视频 蜜芽188.CNN网页B站 生化危机6艾达 尺码最大的国产suv 东北往事之黑道风云20年电视剧第二部 日本漫画无翼乌全彩漫画 善良的小峓子7中字HD 荒野大镖客暴躁老太太怎么救 男生和女生在房间打扑克差差差 成人影片下载网站 梦幻诛仙法宝技能大全 北野の...http://m.debede.cn/post/89043.html
5.canon.jiaxingyu.cn/html/3336045.html1982年,义乌诞生了第一代小商品市场:稠城镇的湖清门小百货市场。 1984年,义乌提出了"兴商建县"的发展战略,建成了第二代义乌小商品市场。 1986年,第三代小商品市场正式开业。 1992年,建成了第四代小商品市场,同年更名为"中国小商品城"。 2002年,第五代小商品市场正式运营,且更名为"义乌国际商贸城",并在后期...http://canon.jiaxingyu.cn/html/3336045.html
1.欢乐斗地主残局困难02054炸宣战五雷轰顶!兵器谱第一发怒 游戏解说虫子 32跟贴 斗地主:开局三炸放出绝招!结局离谱变成瓜怂!解说气的想掀桌了 游戏解说虫子 33跟贴 斗地主:十年难遇最高深控牌大师!铁牌惨遭暗算!钢炮活活闷死 游戏解说虫子 60跟贴 斗地主:年度最离谱奇葩翻盘局!掘开吓出冷汗!阿酒惊的目瞪口呆 游戏解说虫子 55...https://m.163.com/v/video/VHG21PP2O.html
2.kuaiwan快玩快玩游戏快玩网页游戏最齐全的网页游戏大全快玩网页游戏是最齐全的网页游戏大全,这里有最好玩的网页游戏,以及最新网页游戏开服信息,凡人修真2,神曲,王者召唤,神魔仙界,武林叁,醉西游,大侠传,神仙道,龙将,热血海贼王,斗破苍穹2,侠武英雄传,英雄远征,英雄王座,梦幻飞仙,百炼成仙,梦幻修仙,http://www.kuaiwan.com/
3.有关初一开学周记18篇这个时候,我忽然觉得,刚刚过去的快乐寒假已经远离我而去,什么“愤怒的小鸟”啦,什么“会说话的汤姆猫”啦,什么“宠物连连看”啦……那些吸引我的小游戏,我要和它们说“拜拜”了。 新学期开始了,我一定要更加用心学习,爸爸妈妈辛苦工作,不就是为了给我们创造一个良好的成长环境吗?老师们废寝忘食的教诲,不就是为...https://www.cnfla.com/zhouji/2688743.html
4.初一开学第一周周记(精选30篇)这个时候,我忽然觉得,刚刚过去的'快乐寒假已经远离我而去,什么“愤怒的小鸟”啦,什么“会说话的汤姆猫”啦,什么“宠物连连看”啦……那些吸引我的小游戏,我要和它们说“拜拜”了。 新学期开始了,我一定要更加用心学习,爸爸妈妈辛苦工作,不就是为了给我们创造一个良好的成长环境吗?老师们废寝忘食的教诲,不就是...https://www.ruiwen.com/zhouji/1199553.html
5.课堂行为(精选6篇)要科学运筹时间,还要了解学生心理活动规律,教学实践经验告诉我们,每周星期二、三、四、五和每天的第一、二、三节课,通常是师生精力最旺盛的时间,而每节课的前半小时,又是最有效的时间。因此,要为每一堂课设计一个精彩的开头,在有效时间内突出解决好每一课的重点和难点,力求有一个坚实的课的中部,形成课堂教学的...https://www.360wenmi.com/f/filez6puu455.html
6.?.?APP下载v9.5.4某县市场监督管理局对该餐饮店处以罚款50000元,与《行政处罚法》第五条关于“实施行政处罚必须以事实为依据,与违法行为的事实、性质、情节以及社会危害程度相当”,第三十三条关于“违法行为轻微并及时改正,没有造成危害后果的,不予行政处罚。初次违法且危害后果轻微并及时改正的,可以不予处罚”的规定不一致,也与当时...http://m.hqbmdax.cn/YBZ/detail/dxH.html
7.快3大小单双平台游戏介绍宠物连连看可爱版2,是一 6.「欢迎使用」快3大小单双平台-官网-APP下载支持:winall/win7/win10/win11系统类型:快3大小单双平台下载(2024全站)最新版本IOS/安卓官方入口v2.9.46.48(安全平台)登录入口是一款非常优秀的开放世界生存游戏,游戏中的真实度非常高,让玩家感受到真实的生存...http://www.share.xuuxx.com/OOP/detail/6Npoe0iN.html
8.amaze.jaiser.cn/woyun/65467.html游戏宠物连连看3.1 317.95MB 62%好评7516人) 十八色 韩国一卡二卡三卡四卡网站 抖音发布女性数据报告 555.33MB 49%好评7220人) 宠物小精灵bw118 富二代止步 神秘地洞 499.78MB 85%好评4367人) 唇齿之间第2季 2014年春晚魔术 光遇红色光芒在哪里 554.27MB 41%好评3387人) 可以自由侵犯的游戏 国产自...http://amaze.jaiser.cn/woyun/65467.html
9.初一对新学期的展望(通用33篇)这个时候,我忽然觉得,刚刚过去的'快乐寒假已经远离我而去,什么“愤怒的小鸟”啦,什么“会说话的汤姆猫”啦,什么“宠物连连看”啦……那些吸引我的小游戏,我要和它们说“拜拜”了。 新学期开始了,我一定要更加用心学习,爸爸妈妈辛苦工作,不就是为了给我们创造一个良好的成长环境吗?老师们废寝忘食的教诲,不就是...https://www.oh100.com/a/201702/477579.html
10.用Python做一个游戏辅助脚本,完整编程思路分享!简述:本文将以4399小游戏《 宠物连连看经典版2 》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。 运行环境:Win10/Python3.5。 主要模块:win32gui(识别窗口、窗口置顶等操作)、PIL(屏幕截图)、numpy(创建矩阵)、operator(比较值)、pymouse(模拟鼠标点击)。 https://blog.csdn.net/xiangxueerfei/article/details/138075267
11.压大小单双平台赚钱软件排行榜前十名推荐玩家只要在每一关卡成功消除掉所有的神奇宝贝图案,就可以顺利过关。每一关中都会多放置两个可爱呆萌的小精灵哦,玩家一定要眼疾手快才可以赢得最后的胜利!快来绿色资源网试玩吧!游戏介绍宠物连连看可爱版2,是一 8.「注册免费送彩金」压大小单双平台赚钱软件-官网-APP下载支持:winall/win7/win10...http://www.share.chpottery.com/HMw/detail/7AxDWdlv.html
12.→西部10胜首队!雷霆大胜鹈鹕升第一亚历山大29分杰伦31+6+7北京时间11月14日,NBA常规赛雷霆主场对阵鹈鹕,雷霆最多落后12分情况下,亚历山大与杰伦合计轰下60分率队逆袭,最终雷霆106-88战胜鹈鹕收获2连胜,成为西部首支10胜球队升至西部第一,鹈鹕遭遇6连败。 数据统计 雷霆:杰伦31分6篮板7助攻4断2帽,华莱士5分5断4篮板,亚历山大29分5篮板5助攻2断2帽,米切尔6分2篮板3助攻...http://m.hljqst.cn/QUR/all/aNAkJ.html
13.千赢游戏官网手机版,真实地复原了驾驶舱;,宠物连连看手机版在原神奇宝贝的基本上,增加了“极品图案”“方向路牌”两个头像图片;。 第五步:设置安全选项 千赢游戏官网手机版通常要求您设置一些安全选项,一款非常刺激有趣的模拟驾驶游戏,驾驶自己的工程车辆要面对各种挑战,有很多驾驶任务等着你去完成。 ,精致卡通的场景画面...https://www.zhuayoukong.com/news/127602.html
14..?APP电子腾讯彩票 - 应用详情,http://m88m,凤凰彩票分分快三,文本豪客,澳洲幸运五历史记录查询快云 下载,...彩99app安卓版第七下载 悟空体育平台登录入口官网 六合管家 想要x x网站 mobile下载安装 凤凰棋牌下载...连连看游戏宠物连连看 世界大博彩公司排名 好运彩票官方 盈和国际 博远网站 惠泽社群香港网址 六米炸金花...http://m.hy9anqmcc.top/BVY/detail/qEVzfA.html
15.三国杀3.8.5版(三国杀全武将破解版5.0)游戏策略恐龙快打双人选关版 奇妙水世界 米拉奇战记 装扮阿Sue化妆做饭公主朵拉白雪公主蛋糕汉堡美发布置餐厅婚纱婚礼打工挣钱芭比娃娃礼服大头妹拼图宠物宝贝美甲时尚制作小黑花花购物星座MM小游戏守护甜心明星美容小美连连看祖玛测试类养成大鱼小鱼找茬古代换装泡泡龙消消看 ...https://www.hxtkd.com/post/2011.html
16.真女神转生5正版《真女神转生5》原版名称为《真·女神转生V》,是ATLUS制作并发行的一款角色扮演游戏。该游戏为《真·女神转生》系列的第五部主要作品,于2020年公布开发消息,并于次年登陆任天堂Switch平台。游戏类型为回合制角色扮演游戏,玩家可以自由组合队伍进行战斗冒险。如果您想体验游戏的正版内容,建议您通过官方渠道购买和下载。 https://news.mogufr.com/yxzn/202411/68496.html
17.休闲闯关休闲闯关游戏休闲闯关小游戏这关你不行 休闲闯关小游戏 益智休闲 | 42.49MB 下载 天天玩什么 休闲闯关游戏 益智休闲 | 36.50...第一人称投掷斧头,消灭敌人。 益智休闲 | 86.14MB 下载 小狐狸的梦 益智闯关的小游戏 益智休闲 ...卡哇伊宠物连连看 休闲有趣的小游戏 益智休闲 | 5.67MB 下载 小鸡弹跳 休闲有趣的小游戏 益智休闲...https://app.ali213.net/heji/xxcgsyhj.html
18.?超值推荐,抢先体验:app资料网站免费版?免费版...宠物连连看在线玩免费 ag在公司什么意思 91棋牌室游戏 d88尊龙官方网 每个平凡的日子里都有细微...港式五张棋牌官网930最新版官方手游.游戏撒大厅.cc 斗地主网页版代码 德扑圈app官方客服 澳门星际...澳门第十三娱城账号 博盈彩票是哪家子公司 电子版个人简历制作 开心消消乐一共有多少关 会员也...http://ye.bzmenye.cn/
19.超级玛丽经典五合一下载超级玛丽经典五合一官方免费下载超级玛丽经典五合一评论 1楼 华军网友 2021-09-03 19:57:20 超级玛丽经典五合一很有意思,本人极力推荐~ 2楼 华军网友 2019-11-27 20:17:40 超级玛丽经典五合一真好玩,大力推荐! 3楼 华军网友 2021-12-13 02:59:59 超级玛丽经典五合一超爱的,下载非常快!!https://m.onlinedown.net/soft/112732.htm/
20.初一下学期开学周记500字(通用42篇)这个时候,我忽然觉得,刚刚过去的快乐寒假已经远离我而去,什么“愤怒的小鸟”啦,什么“会说话的汤姆猫”啦,什么“宠物连连看”啦……那些吸引我的小游戏,我要和它们说“拜拜”了。 新学期开始了,我一定要更加用心学习,爸爸妈妈辛苦工作,不就是为了给我们创造一个良好的成长环境吗?老师们废寝忘食的教诲,不就是为...https://www.yjbys.com/riji/zhouji/722814.html
21.初一新学期周记范文500字(精选40篇)这个时候,我忽然觉得,刚刚过去的快乐寒假已经远离我而去,什么“愤怒的小鸟”啦,什么“会说话的汤姆猫”啦,什么“宠物连连看”啦……那些吸引我的小游戏,我要和它们说“拜拜”了。 新学期开始了,我一定要更加用心学习,爸爸妈妈辛苦工作,不就是为了给我们创造一个良好的.成长环境吗?老师们废寝忘食的教诲,不就是...https://www.unjs.com/zuowen/zhouji/20210818095137_4010778.html
22.初一开学周记500字(通用39篇)这个时候,我忽然觉得,刚刚过去的快乐寒假已经远离我而去,什么“愤怒的小鸟”啦,什么“会说话的汤姆猫”啦,什么“宠物连连看”啦……那些吸引我的小游戏,我要和它们说“拜拜”了。 新学期开始了,我一定要更加用心学习,爸爸妈妈辛苦工作,不就是为了给我们创造一个良好的成长环境吗?老师们废寝忘食的教诲,不就是为...https://www.fwsir.com/fanwen/html/fanwen_20170110162500_351521.html
23.m.jovich.cn/niindex/142290811师兄啊师兄第二季高清在线观看 圣岛季 137VT最大但人文艺术图 被看门老头糟蹋的校花 游戏宠物连连看3.1 回到未来2国语 japonensisjavaHBB mmr-298 女生和男生一起努力生猴子 水蜜桃传媒科技有限公司网站 99九九99九九九视频精品 扇娘电视剧全集 里番儿 yaoi级 appgrowing 四个学长一起上我会坏...http://m.jovich.cn/niindex/142290811