聊聊C#与冲顶大会

时间:2021-09-04 07:00:38

一、由跳一跳开始

2018年初,跳一跳小措施着实火了一把。一时间,各类攻略,甚至帮助工具也应运而生。作为.net阵营的一员,园友的这篇跳一跳帮助措施文章,,可以说是让人眼前一亮。实现思路梗概如下:

1.下载adb工具;

2.打开手机usb调试模式;

3.通过命令行挪用adb工具,向手机发送命令

3.1发送截图命令

3.2将截图从手机复制到磁盘

3.3将手机截图绘制到winform窗体的PixtureBox

3.4鼠标左键单击小人底部,右键单击方针点

3.5将小人底部的点,方针点之间的距离转换为屏幕按压时间

3.6发送屏幕按压命令

4.手动完成一次跳跃

二、偶遇冲顶大会

有意无意得总是遇见冲顶大会几个字,通过搜索后,发明是一款在线限时答题类app。每道题三个选项,10s内作答,共12道标题问题,去不答对以后与其他全答对的人均分奖金。奖金从50000-300000不等。

https://livc.io/blog/204?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 这篇文章供给了一个答题帮助思路:

1.截取手机屏幕图片

2.识别截图中的标题问题

3.挪用浏览器,搜索标题问题

不过,此思路是基于ios手机操纵系统,给与 iOS + Mac+WDA+免费ocr识别来实现的。

三、跳一跳与冲顶大会

本着生命在于折腾的原则,想着在android手机操纵系统+windows操纵系统上也能实现一个答题帮助工具。借(剽)鉴(窃)上面的实现思路,说下,具体的实现过程。

1.发送获取屏幕截图命令 ”adb shell screencap -p /sdcard/xxx.png”

2.发送将手机截图复制到本地磁盘的命令  ”pull /sdcard/xxx.png

3.获取标题问题地址区域

    3.1 本身的手机屏幕辨别率为1080*1920,手机截图长度为16.5cm,标题问题开始呈现的位置距离图片顶部为3cm,标题问题宽度概略为2cm(标题问题为2行文字),这一步,跳一跳帮助工具已经实现了。

    3.2 挪用算法,从手机截图中截取标题问题地址区域巨细的图片 Bitmap map = GetPart(file, 0, 0, 1080, (int)(1920 * (5.5 - 3) / 16.5), 0, (int)(1920 * 3 / 16.5));

1 /// <summary> 2 /// 获取图片指定部分 3 /// </summary> 4 /// <param>图片路径</param> 5 /// <param>方针图片开始绘制处的坐标X值(凡是为0)</param> 6 /// <param>方针图片开始绘制处的坐标Y值(凡是为0)</param> 7 /// <param>方针图片的宽度</param> 8 /// <param>方针图片的高度</param> 9 /// <param>原始图片开始截取处的坐标X值</param> 10 /// <param>原始图片开始截取处的坐标Y值</param> 11 private Bitmap GetPart(string pPath, int pPartStartPointX, int pPartStartPointY, int pPartWidth, int pPartHeight, int pOrigStartPointX, int pOrigStartPointY) 12 { 13 Image originalImg = Image.FromFile(pPath); 14 15 Bitmap partImg = new Bitmap(pPartWidth, pPartHeight); 16 Graphics graphics = Graphics.FromImage(partImg); 17 Rectangle destRect = new Rectangle(new Point(pPartStartPointX, pPartStartPointY), 18 new Size(pPartWidth, pPartHeight));//方针位置 19 Rectangle origRect = new Rectangle(new Point(pOrigStartPointX, pOrigStartPointY), 20 new Size(pPartWidth, pPartHeight));//原图位置(默认从原图中截取的图片巨细即是方针图片的巨细) 21 22 graphics.DrawImage(originalImg, destRect, origRect, GraphicsUnit.Pixel); 23 24 return partImg; 25 }

GetPartPicture

    3.3 使用开源ocr识别库Tesseract,识别上一步截图map中的标题问题