#源码下载地址:https://files.cnblogs.com/files/cnfan/jump.rar

importosimportcv2importnumpy as npimporttimeimportrandom#使用的Python库及对应版本:#python 3.6#opencv-python 3.3.0#numpy 1.13.3#用到了opencv库中的模板匹配和边缘检测功能

defget_screenshot(id):#os.system('adb shell /system/bin/screencap -p /sdcard/screenshot.png')#获取当前界面的手机截图

#os.system('adb pull /sdcard/screenshot.png d:/fan/screenshot.png')#下载当前这个截图到当前电脑当前文件夹下

os.system('adb shell screencap -p /sdcard/%s.png' %str(id))

os.system('adb pull /sdcard/%s.png .' %str(id))defjump(distance):#这个参数还需要针对屏幕分辨率进行优化

press_time = int(distance * 1.35)#生成随机手机屏幕模拟触摸点

#模拟触摸点如果每次都是同一位置,成绩上传可能无法通过验证

rand = random.randint(0, 9) * 10cmd= ('adb shell input swipe %i %i %i %i' +str(press_time)) \% (320 + rand, 410 + rand, 320 + rand, 410 +rand)

os.system(cmd)print(cmd)defget_center(img_canny, ):#利用边缘检测的结果寻找物块的上沿和下沿

#进而计算物块的中心点

y_top = np.nonzero([max(row) for row in img_canny[400:]])[0][0] + 400x_top=int(np.mean(np.nonzero(canny_img[y_top])))

y_bottom= y_top + 50

for row inrange(y_bottom, H):if canny_img[row, x_top] !=0:

y_bottom=rowbreakx_center, y_center= x_top, (y_top + y_bottom) // 2

returnimg_canny, x_center, y_center#第一次跳跃的距离是固定的

jump(530)

time.sleep(1)#匹配小跳棋的模板

temp1 = cv2.imread('temp_player.jpg', 0)

w1, h1= temp1.shape[::-1]#匹配游戏结束画面的模板

temp_end = cv2.imread('temp_end.jpg', 0)#匹配中心小圆点的模板

temp_white_circle = cv2.imread('temp_white_circle.jpg', 0)

w2, h2= temp_white_circle.shape[::-1]#循环直到游戏失败结束

for i in range(1000):

get_screenshot(0)

img_rgb= cv2.imread('%s.png' %0, 0)#如果在游戏截图中匹配到带"再玩一局"字样的模板,则循环中止

res_end =cv2.matchTemplate(img_rgb, temp_end, cv2.TM_CCOEFF_NORMED)if cv2.minMaxLoc(res_end)[1] > 0.95:print('Game over!')break

#模板匹配截图中小跳棋的位置

res1 =cv2.matchTemplate(img_rgb, temp1, cv2.TM_CCOEFF_NORMED)

min_val1, max_val1, min_loc1, max_loc1=cv2.minMaxLoc(res1)

center1_loc= (max_loc1[0] + 39, max_loc1[1] + 189)#先尝试匹配截图中的中心原点,

#如果匹配值没有达到0.95,则使用边缘检测匹配物块上沿

res2 =cv2.matchTemplate(img_rgb, temp_white_circle, cv2.TM_CCOEFF_NORMED)

min_val2, max_val2, min_loc2, max_loc2=cv2.minMaxLoc(res2)if max_val2 > 0.95:print('found white circle!')

x_center, y_center= max_loc2[0] + w2 // 2, max_loc2[1] + h2 // 2

else:#边缘检测

img_rgb = cv2.GaussianBlur(img_rgb, (5, 5), 0)

canny_img= cv2.Canny(img_rgb, 1, 10)

H, W=canny_img.shape#消去小跳棋轮廓对边缘检测结果的干扰

for k in range(max_loc1[1] - 10, max_loc1[1] + 189):for b in range(max_loc1[0] - 10, max_loc1[0] + 100):

canny_img[k][b]=0

img_rgb, x_center, y_center=get_center(canny_img)#将图片输出以供调试

img_rgb = cv2.circle(img_rgb, (x_center, y_center), 10, 255, -1)#cv2.rectangle(canny_img, max_loc1, center1_loc, 255, 2)

cv2.imwrite('last.png', img_rgb)

distance= (center1_loc[0] - x_center) ** 2 + (center1_loc[1] - y_center) ** 2distance= distance ** 0.5jump(distance)

time.sleep(1.3)

微信跳一跳python代码_微信跳一跳python程序相关推荐

  1. python微信公众号秒杀代码_微信跳一跳辅助python代码实现

    微信跳一跳辅助python代码实现 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  微信跳一跳辅助python代码实现.txt ] (友情提示:右键点上行txt文档 ...

  2. 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法-1.jpg (143.81 KB, ...

  3. pycharm写python代码_使用pycharm写python代码的一些提高效率的技巧(持续更新)-Go语言中文社区...

    这篇博客主要是用来记录自己在学习pycharm时发现的一些能够提高编写python代码效率的小技巧. 1.问题:在代码很多的情况下,调用函数时想看看函数的参数以及函数内容,按ctrl+鼠标左键虽然进入 ...

  4. 如何修改python代码_解决如何去除Python代码前行号的方法

    获取Python脚本代码前行号的方法我们已经知道了,那如何去除Python脚本代码前行号的方法又是怎样的呢?今天我们就来为大家写个实例代码来看下. 刚刚接触Python时,因为经常要在网上拷贝别人的代 ...

  5. 手机如何看python代码_用手机运行Python代码

    前言 在手机上运行Python需要用一个软件,叫QPython3L,当然还有别的软件也是可以运行Python的,不过我认为QPython3L是其中相对较好的一个. 首先声明一下,我也只是会简单的使用 ...

  6. 在树莓派里面运行python代码_树莓派如何运行python程序

    树莓派如何运行python程序 发布时间:2020-09-23 12:03:39 来源:亿速云 阅读:128 作者:小新 这篇文章主要介绍了树莓派如何运行python程序,具有一定借鉴价值,需要的朋友 ...

  7. 交叉验证python代码_交叉验证以及python代码实现

    这篇文章介绍的内容是关交叉验证以及python代码实现 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 模型选择的两种方法:正则化(典型方法).交叉验证. 这里介绍交叉验证及其pyth ...

  8. 怎么读python代码_【怎么读python代码】作文写作问答 - 归教作文网

    python怎么读 python : 发音:英 [ˈpaɪθən] 美 [ˈpaɪθɑ:n] 中文释义:巨蛇,大蟒 复数形式:pythons 英文单词,意为巨蛇,大蟒. 扩展资料: 例句如下:When ...

  9. python 实现跳一跳自动化代码_微信跳一跳脚本重出江湖,python实现安卓iOS自动版与手动版!...

    前面一段时间在GitHub上看到有人利用Python玩一款名为"跳一跳"的微信小程序,于是打算自己也来试一试,毕竟这款小游戏最近吸引了众多人的目光. 演示工具 电脑系统:Win10 ...

最新文章

  1. python3+opencv+tkinter开发简单的人脸识别小程序
  2. 手动调用cx-table.focus和a.focus方法的效果比较
  3. aswing JTable用法
  4. C++:成绩类Score
  5. lshw linux_Linux lshw命令–获取Linux硬件信息
  6. flAbsPath on /var/lib/dpkg/status failed - realpath
  7. html页面导出pdf截断问题,vue页面生成pdf且避免分页截断处理
  8. 产品读书《大败局 I》 《大败局II》
  9. android自定义控件(组合控件)相关
  10. 计算机辅储存器有什么,计算机辅存储器包括
  11. Python经典面试题解析:实现斐波那契数列
  12. DICOMRT:XXX Target Volume,各种目标体积浅析
  13. 机器人工程师技术资料
  14. xp大容量u盘补丁_u盘128g 个性 大容量电脑系统修复
  15. mysql指令sum_MySQL Sum()函数
  16. 一个简单的BitTorrent客户端实现(五):tracker manager和tracker实现
  17. 我撑伞,在石桥上等你
  18. Ubuntu-Base 18 文件系统 在iMX8平台上的移植
  19. TpyeScript基础
  20. 写博客的时间被看小说、刷微信的时候,要想想

热门文章

  1. mac访达边栏设置显示文稿、桌面等信息,但是不显示
  2. unix:dup与dup2函数详解
  3. parquet列式文件实战(未完,待续)
  4. 列表和元组元素的增加
  5. NameError: free variable ‘xx‘ referenced before assignment in enclosing scope
  6. 一体化伺服电机在全自动玻璃切割机上应用简介
  7. Licode入门学习:MediaStream源码分析(二)
  8. Java基础之接口与抽象类的区别
  9. 水星mac1300r虚拟服务器,水星 MAC1300R V1 无线路由器上网设置
  10. Java基本语法入门