吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7539|回复: 26
上一主题 下一主题
收起左侧

[其他原创] 按键精灵挑战答题

  [复制链接]
跳转到指定楼层
楼主
楚子沦i 发表于 2021-3-12 16:21 回帖奖励
本帖最后由 楚子沦i 于 2021-3-12 23:01 编辑

之前在研究答题功能的时候,发现好麻烦。虽然最后还是做出来这个功能了,但是有的时候并不能识别。所以我当时就想挑战答题肯定很难。
没想到居然很简单,因为他有题库。

虽然其实用python之类的写这个查题功能很简单,但是之前想着用按键精灵做答题功能,那么就要想该如何做了。

首先先讲一下我的思路吧。

我们先识别这个挑战答题在任务的那个位置,然后进行完成判断,如果完成则停止运行,如果未完成则点击前往。

之后我们设置一个识别范围,将范围内的字上传到百度ocr上进行文字识别,最后再传到那些答题网站上获取答案,进行反馈,再进行回答即可。


代码发布出来只为互相交流学习,禁止利用此代码进行商业行为等活动。

[Asm] 纯文本查看 复制代码
Function 挑战答题
    Dim num = 1
    Swipe 364, 1161, 364, 735
    Delay 1500
    Swipe 364, 1161, 364, 935
    Delay 1500
    Dim intX,intY
    FindPic 0,0,0,0,"Attachment:挑战答题识别.png","000000",0,0.9,intX,intY
    If intX > -1 And intY > -1 Then
        Tap intX+500,intY
        TracePrint "挑战答题"
        Delay 5000
    Else 
        Tap 41, 102
        Delay 1000
        Exit Function
    End If
    Import "shanhai.lua"
    Import "zm.luae" //导入插件,只需执行一次
    zm.Init  //初始化插件,只需执行一次
    Dim t(),题目
    If Not zm.OcrBaiDuInit("api""密钥") Then
        TracePrint "初始化设置百度云识别失败"
        EndScript
    End If
    //全屏识别文字
    Do
                
        For 9
            题目 = zm.OcrBaiDu(443,290,676,349)
            TracePrint 题目
            dim a = zm.HttpGet("http://www.syiban.com/search/index/init.html?modelid=1&q="&题目)
            TracePrint a
            //LUA模式匹配,返回数组
            dim RegexArr = shanhai.RegexFind(a,"答案:(.-)%<")
            TracePrint RegexArr(0)
            If RegexArr(0) = null Then 
                //76,294,323,343
                题目 = zm.OcrBaiDu(76,294,323,343)
                TracePrint 题目
                a = zm.HttpGet("http://www.syiban.com/search/index/init.html?modelid=1&q="&题目)
                TracePrint a
                //LUA模式匹配,返回数组
                RegexArr = shanhai.RegexFind(a,"答案:(.-)%<")
                If RegexArr(0) = null Then 
                    // 349,349,531,394
                    题目 = zm.OcrBaiDu(349,349,531,394)
                    TracePrint 题目
                    a = zm.HttpGet("http://www.syiban.com/search/index/init.html?modelid=1&q="&题目)
                    TracePrint a
                    TracePrint RegexArr(0)
                    If RegexArr(0) = null Then 
                        TracePrint "null"
                        Tap 51, 90
                        Delay 1500
                        Tap 220, 756
                        Delay 1500
                        Exit For
                    End If        
                End If
            End If
            Dim newanswer = shanhai.RegexFind(RegexArr(0),"[A-Z]")
            TracePrint newanswer(0)
                        If num > 7 Then 
                                Tap 341, 785
                Delay 1500
                        End If
            //判断选项位置
            FindPic 0,0,0,0,"Attachment:句号判断1.png","000000",2,0.9,intX,intY
            If intX > -1 And intY > -1 Then
                Tap intX,intY
                TracePrint "a"&intX,intY
                Delay 1500
            Else 
                FindPic 0, 0, 0, 0, "Attachment:句号判断2.png", "000000", 2, 0.9, intX, intY
                If intX > -1 And intY > -1 Then
                    TracePrint "b"&intX,intY
                    Delay 1500
                Else 
                    FindPic 0,0,0,0,"Attachment:句号判断3.png","000000",2,0.9,intX,intY
                    If intX > -1 And intY > -1 Then
                        TracePrint "c"&intX,intY
                        Delay 1500
                    End If
                End If
            End If
            If newanswer(0) = "A" Then 
                TracePrint "a"
                Tap intX, intY + 170
                TracePrint intX, intY + 170
                Delay 1500
            ElseIf newanswer(0) = "B" Then
                TracePrint "b"
                Tap intX, intY + 290
                TracePrint intX, intY + 290
                Delay 1500
            ElseIf newanswer(0) = "C" Then
                TracePrint "c"
                Tap intX, intY + 410
                TracePrint intX, intY + 410
                Delay 1500
            ElseIf newanswer(0) = "D" Then
                TracePrint "d"
                Tap intX, intY + 540
                TracePrint intX, intY + 540
                Delay 1500
            Else 
                Tap 341, 785
                Delay 1500
            End If
            FindPic 0,0,0,0,"Attachment:挑战答题意外结束.png","000000",0,0.9,intX,intY
            If intX > -1 And intY > -1 Then
                Tap 217,886
                Delay 1500
                Tap 51, 92
                Delay 1500
                Exit For
            End If
        Next
        FindPic 0,0,0,0,"Attachment:挑战答题意外结束.png","000000",0,0.9,intX,intY
        If intX > -1 And intY > -1 Then
            Tap 217,886
            Delay 1500
            Tap 51, 92
            Delay 1500
        End If
        Delay 3000
        FindPic 0,0,0,0,"Attachment:挑战答题识别.png","000000",0,0.9,intX,intY
        If intX > -1 And intY > -1 Then
            Tap intX+500,intY
            TracePrint "挑战答题"
            Delay 5000
        Else 
            Tap 41, 102
            Delay 1000
            Exit Function
        End If
    Loop
End Function


上面即代码,其实写的很明白了,就是我们先获取一下答题的位置,然后进行跳转。之后获取一个范围进行文字识别,当然其实当时写的时候遇到了一些小问题,比如说符号之类的正好在那个位置,或者比如说读音字形之类的题,识别的位置就不对了,所以加了一个if判断,如果出现错误就从头开始识别,能解决绝大部分的问题。

接下来就是选项的获取了,这个其实我当时想了半天,因为按键精灵识别颜色的时候那种色差相近的是很难识别上的,所以我想了另一个办法就是识别句号,每一道题都有一个句号结尾,我们识别这个句号就好了,然后加上一部分的xy来进行点击就行了。

最后再就是答对5道题后答错,我这里是设置了答对几道题后随机点一个位置,然后错误,进行返回,其实也可以查完答案后,比如说a给他点b都是可以的。

最后部分的源码也公开在了GitHub里,欢迎大家来star      https://github.com/datehoer/studygoodcountry

另外,最重要的一点就是代码仅供交流学习使用,请勿进行各类操作了。。。。


发现好多兄弟都不知道该咋用,这里是用的按键精灵手机版,然后用的雷电模拟器。

其实按键精灵还是很好写的,因为他其实左面有代码提示,还有一键化操作,简单的功能完全不需要逻辑,只需要找到合适的指令然后添加数据上就可以了。
当然这里面使用的位置是在积分页面,然后截一下图即可。

这里代码只是借鉴一下而已,不要直接复制使用,如果想用的话请去GitHub查看相关代码。

免费评分

参与人数 7吾爱币 +12 热心值 +7 收起 理由
xiaomin86 + 2 + 1 请楼主大大问学会这些,需要学习python的哪些知识?
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
do2020 + 1 + 1 谢谢@Thanks!
未来老中医 + 1 + 1 谢谢@Thanks!
狙击手01 + 1 + 1 用心讨论,共获提升!
mei564335 + 1 + 1 用心讨论,共获提升!
growing88 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| 楚子沦i 发表于 2021-8-16 17:25 |楼主
@xiaomin86
兄弟,你的问题我已经看到了。
首先,你给我回复的帖子是按键精灵,所以这个实际上是跟python没有一毛钱关系的。
如果是想要实现我帖子功能的话,其实是非常容易地,首先需要一个安卓的模拟器,雷电模拟器,然后下载一个按键精灵手机版即可。
之后按键精灵的教程可以去b站看一看,不过其实大多数的逻辑跟其他语言没有什么区别,随便找一个免费的看就行了,或者找一个案例听,非常容易的,如果说,没有任何编程语言基础的话,推荐学习一下c语言,中国大学mooc里面翁恺老师讲的很不错,非常适合入门。之后就去b站随便找一个按键精灵的教程视频看就行了。按键精灵其实逻辑来说是非常容易地,自己随便写两个案例就可以了。

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
xiaomin86 + 2 + 1 感谢您的回复!

查看全部评分

推荐
 楼主| 楚子沦i 发表于 2021-3-16 17:43 |楼主
xiongwang 发表于 2021-3-16 12:56
大哥,说实话,我按照猜错步骤弄的,最后也成功启动了,但是不能自动学是怎么回事呢?雷电模拟器也试了, ...

不就是先把东西填好后就会有提示了么,然后等就行了啊
出现什么如果出现问题请联系xxx之后等待一会就开始运行了.
当然如果你的脚本停止运行了那就另当别论了,只要他没停止运行那么等待就行了啊
沙发
李诺千金 发表于 2021-3-12 16:26
3#
lczhzn9611115 发表于 2021-3-12 16:50
这也是个好东西
4#
lianxian1311 发表于 2021-3-12 16:56
你说他懒吧,他又去写了代码,你说他勤快吧,他答题又不想动脑
5#
阿童木嗷嗷 发表于 2021-3-12 17:01
停止运行
6#
未来老中医 发表于 2021-3-12 17:31
谢谢分享
7#
灬饭の否灬 发表于 2021-3-12 17:41
这个的适用范围指哪些答题呢?
8#
ff5500 发表于 2021-3-12 17:42
我不明白这个是用在什么地方的呢?
万能搜索答题?!?
9#
Leen 发表于 2021-3-12 17:52
要是能弄个四人赛的就好了
10#
do2020 发表于 2021-3-12 17:54
谢谢大佬!!!
赶紧收藏。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表