小猿口算炸鱼脚本

devtools/2024/10/19 5:11:11/

目录

写在前面:

一、关于小猿口算:

二、代码逻辑

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/devtools/126927.html

相关文章

PHP 任务管理:跨行业的科技驱动力量

PHP 任务管理至关重要&#xff0c;它能实现自动化流程&#xff0c;提升工作效率&#xff0c;如自动执行代码测试、订单处理等任务&#xff0c;减少人工操作的繁琐与错误。同时&#xff0c;通过合理的任务调度&#xff0c;确保关键任务优先执行&#xff0c;优化资源分配。在可靠…

JS模块化及import、export

一、模块化的背景和目的 模块化的背景 代码重复&#xff1a;功能类似的代码在多个地方出现&#xff0c;导致维护成本增加。耦合度高&#xff1a;代码之间依赖性强&#xff0c;修改一个地方可能会导致其他部分出现问题。难以扩展&#xff1a;想要新增功能时&#xff0c;现有代码…

C++ OpenCV实现简单的自瞄脚本(OpenCV实战)

练枪的时候发现打的靶子特征很醒目&#xff0c;而且操控的逻辑也不是说特别难&#xff0c;刚好会一点点C和OpenCV&#xff0c;为什么不试试写一个小程序来帮助我们瞄准呢&#xff1f; 实现效果 我们主要是通过这款游戏测试自瞄 简单的调参之后本周世界排名也是打到了第一名&…

【C#】第三章习题

选择题 C#程序的主方法是&#xff1a; A. main()B. Main()C. class()D. namespace() 正确答案&#xff1a;B 可用作C#程序用户标识符的一组标识符是&#xff1a; A. void define WORDB. a3_b3 _123 YNC. for -abc CaseD. 2a DO sizeof 正确答案&#xff1a;B C#的数据类型有&…

设计模式在 C# 中的应用

一、引言 在软件开发领域&#xff0c;设计模式是经过实践验证的、用于解决特定软件设计问题的通用方案。它们如同建筑师手中的蓝图&#xff0c;能帮助开发者构建出结构清晰、可维护性强且易于扩展的软件系统。了解并掌握这 些设计模式&#xff0c;对于提升软件质量、降低开发成…

零基础学进程(level 1)

目录 引言 硬件 冯诺依曼体系结构 硬件解读 内存的必要性 实例解读 软件&#xff08;OS&#xff09; 硬件管理 先描述后组织 总结&#xff1a; 进程的概念 何为进程 进程控制块&#xff1a;pcb 访问OS 引言 Linux操作系统以其稳定性和灵活性而闻名于世&#xff0c…

线性可分支持向量机的原理推导 标准优化目标 公式解析

本文是将文章《线性可分支持向量机的原理推导》中的公式单独拿出来做一个详细的解析&#xff0c;便于初学者更好的理解。 公式 9-6 是从之前的最大化间隔问题&#xff08;公式 9-4 和 9-5&#xff09;推导出来的支持向量机&#xff08;SVM&#xff09;的优化问题。它表示的是一…

利用 HandBrake 压制视频

HandBrake 简介 这是一款全桌面平台的开源免费软件&#xff0c;在 Windows、macOS、Linux 下均有对应的应用程序界面。 HandBrake 基于鼎鼎大名的 FFmpeg 多媒体框架。FFmpeg 本身是命令行程序&#xff0c;可以这么理解&#xff1a;HandBrake 是为方便调用 FFmpeg 而开发的用…