最近小猿口算里面的PK功能比较火,很多大学生在里面欺负小学生。我想,为什么不能用AI来欺负欺负那些想炸鱼的大学生呢。于是就有了下面的文章。
设计思路
其实想实现这个程序很简单,首先安装模拟器,运行小猿口算。然后通过文字识别技术识别题目,再用一些简单的判断计算出结果,最后通过模拟鼠标移动轨迹实现答题。所以我们现在就有一下问题等待解决:
1.安装模拟器
2.获取屏幕
3.文字识别
4.运算
5.输出结果
1.安装模拟器
市面上模拟器很多,这里不一一举例了,我选择的是蓝叠模拟器。他有个优势就是能录制脚本并且绑定快捷键,也就是能按一个键让鼠标自动滑,这样可以省的我们去设计鼠标移动的路径,只需模拟按下对应的按键就行。
蓝叠的下载地址:https://www.bluestacks.cn
进去之后下载蓝叠5,安装教程不做过多赘述。
然后就是安装小猿口算了,如果你是安卓手机可以在应用商店下载之后发到电脑上,或者在浏览器找安装包。
这是我找到的安装包网址:https://app.cdo.oppomobile.com/home/detail?app_id=3623864
下好之后直接将安装包拖到模拟器中就行,等待一会,会自动安装。
2.获取屏幕
python获取屏幕的方式有很多,我选择的是pyautogui这个库。
安装方法就是Win+R输入cmd
然后在里面输入
pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/
当有Successfully 时证明你安装成功了(0.9.54是我用的版本,依据你自己用的版本来)
Successfully installed pyautogui-0.9.54
安装完成之后就能导入pyautogui库了
import pyautogui
我们主要使用的函数有
pyautogui.press(keys=" "#模拟按下的按键, presses=#次数) #模拟按下
pyautogui.screenshot(region=(#起始x,起始y,宽,高))) #截屏
因为整个屏幕所包含的信息太多太杂了,为了简化处理内容,提高处理速度,所以我们选择仅对关键信息截图,没错就是题目的数组部分
我的屏幕是1920*1080的,系统缩放比例是100%,然后调试获得的第一个数的四位数据分别是
180,250,70,70
第二位数的四位数据是:
315,250,70,70
如果你想套用我的程序建议也把屏幕设置成1080p,系统缩放100%,然后将模拟器调成竖屏模式,对齐左上角(如下图)这样不用额外调位置
调试完之后我们开始写程序获取数
import pyautogui
num1 = pyautogui.screenshot(region=(180,250,70,70))#获取第一个数
num2 = pyautogui.screenshot(region=(315,250,70,70))#获取第二个数
2.文字识别
文字识别我们就用到了OCR技术。下面是该技术的介绍:
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文