2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 用Python来自动玩放置类游戏 就是你了《剑与远征》

用Python来自动玩放置类游戏 就是你了《剑与远征》

时间:2022-06-30 11:36:07

相关推荐

用Python来自动玩放置类游戏 就是你了《剑与远征》

有个朋友拉我玩《剑与远征》,但是这种放置类游戏来回点开始战斗好累噢。。。。。。

就琢磨用python实现一下自动化操作

毕竟几年之前搞过跳一跳的adb连接然后自己跳

基本思路就是模板匹配,把开始游戏等几个游戏按键截取下来,然后过几秒就给手机截屏,对比是哪个按键,在哪里,模拟点击对应的位置,就可以让他自己推图了,等打不过了我再来给英雄升级。

#!/usr/bin/env python# -*- encoding: utf-8 -*-'''@File : AutoSandE.py@Time : /03/10 13:09:38@Author : Jumpingknight @Version : 1.0@Contact : jumpingknight@'''# here put the import libimport os import cv2import randomimport timeimport reclass AutoGame():def __init__(self,path):self.devicesIP = "192.168.0.100"self.path = pathos.system('cd '+self.path)resolution = os.popen("adb shell wm size").read()self.width = int(re.findall("\d*x",os.popen("adb shell wm size").read())[0][0:-1])#宽度self.height = int(re.findall("x\d*",os.popen("adb shell wm size").read())[0][1:])#宽度self.imgpath = "/sdcard/screenimg.png"self.template = [] self.template.append(cv2.imread( path + "/img1.jpg"))self.template.append(cv2.imread( path + "/img2.jpg"))self.template.append(cv2.imread( path + "/img3.jpg"))self.method = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR','cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']def sendCmd(self,msg):#发送cmd指令,返回cmd的输出return os.popen(msg).read()def screenShot(self):#截取屏幕self.sendCmd("adb shell screencap -p " + self.imgpath)def screenDelete(self):#删除屏幕图像self.sendCmd("adb shell rm /" + self.imgpath)def getScreen(self):self.screenShot()img = cv2.imread(self.imgpath)self.screenDelete()return imgdef matchDegree(self,img,template):#匹配度return cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED).max()def analogPlay(self):while True:img = self.getScreen()for tem in self.template:w = tem.widthh = temp.heightfor meth in self.method:m = eval(meth)r = cv2.matchTemplate(img,tem,m)min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(r)if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:top_left = min_locelse:top_left = max_loc######此段参考/p/62643151#######加个随机偏移怕被认成机器人,虽然不知道被不被禁止clickpoint = [top_left[0] + w/2 + random.randrange(-w/5*10,w/5*10)/10,top_left[1]+h/2 + random.randrange(-h/5*10,h/5*10)/10]####self.clickScreen(clickpoint)#点击time.sleep(3 + random.randrange(-10,10)/10)#给人家歇会def clickScreen(self,point):os.system('adb shell input tap {} {}'.format(point[0],point[1]))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。