小猿口算炸鱼脚本

embedded/2024/10/17 18:12:06/

目录

写在前面:

一、关于小猿口算:

二、代码逻辑

1.数字识别

2.答题部分

三、代码分享:

补充:软件包下载

写在前面:

最近小猿口算已经被不少大学生攻占,小学生直呼有挂。原本是以为大学生都打着本科一年级也是一年级,研一也是一年级,博一也是一年级的口号,凭借自己实力去欺负小学生呢。没曾想竟然是大学生通过脚本刷题。

一个好好的给小学生的口算题已经变成了大学生的计算机大战,比谁的脚本刷题速度更快了(这里偷偷怀疑一下,是不是清华的老师给他的学生们布置了一项作业:比谁的脚本刷题刷的快了)

小猿口算已经连夜招聘网络安全工程师了:

这里也分享一个小编的脚本,质量很差,甚至还没自己做的快呢,不过可以用来自己练手或者自己跑着玩儿,也算是顺应时代潮流。

最后,欺负小学生这种事情,还是不推荐干的。

一、关于小猿口算:

主页就长这样,也没啥好介绍的,今天的主角是“口算PK”里的“20以内的数字比大小”,比赛规则啥的,大家应该看名称就能才出来。我这里是为了方便运行脚本,是在电脑MuMu模拟器上运行的小猿口算:

至于比赛过程,则是给两个数字,可以通过画大于号小于号来进行答题:

二、代码逻辑

1.数字识别

数字识别用来一种很笨的方法:截图,然后通过OpenCv识别。代码的话放在最后一块演示。首选需要把小猿口算和Pycharm同时出现在屏幕上,需要打开Mumu模拟器的窗口置顶功能以方便同时能看到Pycharm和小猿口算

然后如下放置:

 

由于这个截图是截取的置顶位置的图片,参数什么的还得自己调,大家可以查看截取的num.py文件查看自己截图截到了哪个地方,自己修改一下mumu模拟器的位置或者代码中截图位置的参数,保证能截到一下num.png所示的两个数字信息就好了。

2.答题部分

既然能截取到图片,并识别出数字,那比较大于小于就So easy了,接下来就是画大于号小于号,我们直接通过

pyautogui.mouseDown(),

pyautogui.move

pyautogui.mouseUp()

来实现按下鼠标,鼠标移动画大于号或者小于号,松开鼠标的操作。逻辑还是挺简单的。不过这个答题只能保证质量,不能保证速度。

三、代码分享:

python">import math
import sys
import timeimport cv2
import keyboard
import pyautogui
import pytesseract
from PIL import ImageGrab# 鼠标移动相对位置,分为前后两段,用于画大于号或者小于号
# x1大于0,画大于,小于0画小于
def mouse_move(x1, y1):pyautogui.mouseDown()pyautogui.move(x1, y1, duration=0.1)pyautogui.mouseUp()
while True:# 按下空格键终止程序if keyboard.is_pressed('space'):print('游戏结束!')sys.exit()ImageGrab.grab(bbox=(100, 300, 450, 450)).save('./pngs/num.png')# 改为自己的tesseract.exe路径pytesseract.pytesseract.tesseract_cmd = r'E:\IDEs\Python\Tesseract-OCR\tesseract.exe'# 设置生成的照片的路径img = cv2.imread('./pngs/num.png')img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)_, thresh = cv2.threshold(img, 150, 100, cv2.THRESH_BINARY)result = pytesseract.image_to_string(thresh, config='--psm 6').split('?')try:result[0] = result[0].strip()result[1] = result[1].strip()if result[0] == 'O':result[0] = 0if result[1] == 'O':result[1] = 0num1 = math.floor(float(result[0]))num2 = math.floor(float(result[1]))# 设置画大于号小于号的初始位置,参数可调pyautogui.moveTo(277, 700, duration=0.1)if num1 > num2:mouse_move(100,100)print(f'{num1}  >  {num2}')else:mouse_move (-100,100)print(f'{num1}  <  {num2}')time.sleep(0.05)except IndexError as e:print('未捕获到内容!')except ValueError as e:print('未捕获到内容!')

补充:软件包下载

除了CV2和tesseract之外,其他的几个软件包直接鼠标碰到报错(提示找不到软件包)的地方,就会给出解决方法:下载软件包。是在不行自己pip install +软件包名也能下载

需要注意的是cv2是opencv里面的一部分,因此需要以下指令下载openCV

pip install opencv-python

OpenCV包还是挺大的,推荐使用国内镜像:

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

至于tesseract需要手动下载,访问如下地址:

Tesseract User Manual | tessdoc

 滑到最低端选择download

跳转页面后点击这个UB开头的东西

跳转之后找到“set up”程序下载即可

下载安装之后,记得把代码里tesseract.exe的路径也跟着修改一下。


http://www.ppmy.cn/embedded/128231.html

相关文章

30.数据结构与算法-查找-线性表的查找,顺序查找/折半查找(二分查找)/分块查找

顺序查找 时间效率分析 顺序查找的特点 折半查找&#xff08;二分查找/对分查找&#xff09; 折半查找的性能分析-&#xff08;判定树&#xff09; 分块查找&#xff08;索引顺序查找&#xff09; 分块查找性能分析 分块查找优缺点 三种查找方法的比较

索引和主键的区别

在数据库中&#xff0c;索引和主键是两个重要的概念&#xff0c;它们虽然有联系&#xff0c;但功能和特点也有所不同。以下是对索引和主键的详细解释及其区别。 1. 索引 定义 索引是一种数据库对象&#xff0c;用于加速数据检索。它创建了一个数据结构&#xff08;通常是 B …

2024汽车制造业数字化转型的意义

1. 通过精细化管理实现降本增效 精细化管理&#xff1a;应用数字化技术实现人力、设备、物料等资源的动态配置和精确管控&#xff0c;提高物料流转效率、减少人力投入。通过对设备的自动巡检、运营状态监测、故障诊断和预警、预测性维护&#xff0c;有效降低设备故障停机率&…

蜗牛兼职网的设计与实现(论文+源码)_kaic

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;蜗牛兼职网当然也不能排除在外。蜗牛兼职网是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c…

IT运维管理:监控易如何破解机房监控难题,提升运维效率

在当今数字化转型的浪潮中&#xff0c;企业的IT基础设施日益复杂&#xff0c;机房作为数据处理的核心&#xff0c;其稳定运行直接关系到业务的连续性和安全性。然而&#xff0c;随着服务器、存储设备、网络设备等各类硬件的不断增加&#xff0c;以及虚拟化、云计算等技术的广泛…

深度优先搜索 - 岛屿最大面积

题目描述 给定一个由 0 和 1 组成的非空二维数组 grid &#xff0c;用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表水&…

如何在UE5中创建加载屏幕(开场动画)?

第一步&#xff1a; 首先在虚幻商城安装好Async Loading Screen&#xff0c;并且在项目的插件中勾选好。 第二步&#xff1a; 确保准备好所需要的素材&#xff1a; 1&#xff09;开头的动画视频 2&#xff09;关卡加载图片 3&#xff09;准备至少两个关卡 第三步&#xff1a…

一个月学会Java 第18天 容器与泛型(有容器的原码解读)

Day18 容器与泛型 我们来简单讲讲容器是什么&#xff0c;顾名思义&#xff0c;是存东西的器皿&#xff0c;就叫做容器&#xff0c;那在我们计算机中需要存的是什么呢&#xff0c;是不是就是数据啊&#xff0c;所以我们的java是有提供一系列数据容器的&#xff0c;容器我们也叫做…