自动答题剧本教程及源码分享(无视分辨率)
时间:2022-01-11 00:27点击量:


本文摘要:之前写过一个文章,由于app相对敏感,所以把文章删除了,今天换一个app重新写一下。对于自动答题的剧本,一般分两步:一是做一个谜底库(题库);二是凭据谜底库内里的谜底举行答题;先来看看答题的效果:大家应该可以看到答题可以做到完全准确,由于使用的了山海插件获取xml,以及担忧切换速度太快导致app瓦解而加了几秒延迟,所以看起来答题速度并不快。

亚搏体育app官网入口

之前写过一个文章,由于app相对敏感,所以把文章删除了,今天换一个app重新写一下。对于自动答题的剧本,一般分两步:一是做一个谜底库(题库);二是凭据谜底库内里的谜底举行答题;先来看看答题的效果:大家应该可以看到答题可以做到完全准确,由于使用的了山海插件获取xml,以及担忧切换速度太快导致app瓦解而加了几秒延迟,所以看起来答题速度并不快。下面进入教程部门:第一点:制作谜底库;差别app的谜底获取方式是完全纷歧样的,以我现在这个app(驾考宝典)为例,它的谜底获取方式是在“背题模式”内里。我需要做的把题目和对应的谜底提取出来,生存到文本内里。

这里我为了提取利便,把题库存成了json花样。先来看一下代码,然后详细来分析历程:思量文章标题中说的无视分辨率,这里在剧本开始我写了一个获取模拟器宽度的下令,目的是为了凭据差别设备的宽度,调整左右滑动的距离。Dim x=GetScreenX()Swipe x * 0.9, 500, x * 0.1, 500, 300新建一个空缺文本,思量到电脑记事本建txt会自动添加bom头这个毛病,所以直接用按键下令生成的。

Dim 路径="/sdcard/pictures/题库.txt"file.write(路径,"")然后是获取界面的xml,提取内里的所有文字部门,因为使用的是正则匹配,所以每个“文字块”会放到数组内里。Dim m=shanhai.getuixml() dim arr=ShanHai.RegexFind(m,"text=""([^""]+)")上图中红框内容是我们想要的,其中题目的对应的数组下标是牢固的,谜底是不牢固的,因为有的题目是2个选项,有的题目是4个选项,所以谜底的数组下标会在有变化。可是有个特征,就是文字内容中含有“谜底”两个汉字,凭据这个特征我们可以通过查找下令,找到含有“谜底”的谁人数组内容,并提取内里的ABCD,之后再凭据ABCD,找到谜底详细内容是什么文字。当题目和谜底都提取好了以后,就可以生存到文本内里了。

开头我已经说了,我用的是json花样生存的文本,可能有些朋侪不熟悉,可以先看一下,这两篇文章,关于json提取的:对接有道翻译api,详解get方法和json提取【推荐】提取api返回值内里的内容看完以后,你应该知道json内容应该怎么提取了吧,反过来再分析一下json花样,看看怎么写json(json实际上就是字符串)我这里写的是最简朴的json花样{"键名1":"键值1","键名2":"键值2","键名3":"键值3"}这个json的基本花样:键名对应题目,键值对应谜底,后面的序号是就是区分一下差别题目。分成3步来写这个json:第一步:先写{}内部的,详细花样如下,这内里很多多少引号,一个都不能多,一个都不能少,之所以这么多引号,是因为在按键内里,引号是特殊字符中的转义字符,所以如果想写一个引号,就要在引号前面在加上一个引号,表现字符串需要加上一对引号,最终导致要写入一个引号,需要写4个引号。

""""&arr(2)&""":"""&谜底(answer)&""","第二步,去掉末端多出来的一个逗号。写入内容,每一个后面都有逗号,由于最后一个内容后面不在写入内容,所以会多一个逗号,去掉即可,特别强调不要手动去掉,因为我们不能使用电脑内里的记事本。第三步,给整个题库加上{}File.Append(路径,""""&arr(2)&""":"""&谜底(answer)&""",")Dim ku=file.read(路径)file.Write (路径,"{"&left(ku,len(ku)-1)&"}")通过上面的步骤,我们就可以获得一个完整的题库文件了。上面这部门的源码:Import "shanhai.lua"Dim x=GetScreenX()Dim 路径="/sdcard/pictures/题库.txt"file.write(路径,"")For 20 Dim m=shanhai.getuixml() dim arr=ShanHai.RegexFind(m,"text=""([^""]+)") For Each k In arr If InStr(1, k, "谜底") > 0 Then dim answer= right(k,1) Exit For End If Next TracePrint "题目是:"&arr(2) TracePrint "谜底是:"&谜底(answer) File.Append(路径,""""&arr(2)&""":"""&谜底(answer)&""",") Delay 200 Swipe x * 0.9, 500, x * 0.1, 500, 300 Delay 200NextDim ku=file.read(路径)file.Write (路径,"{"&left(ku,len(ku)-1)&"}")Function 谜底(a) If a = "A" Then 谜底=arr(3) ElseIf a = "B" Then 谜底=arr(4) ElseIf a = "C" Then 谜底=arr(5) ElseIf a = "D" Then 谜底=arr(6) End IfEnd Function下面是第二点:答题操作基本思路~一、提取题目二、比对题库,找到正确谜底的文字内容三、点击界面中的谜底对应的文字四、向左滑动,进入下一题详细说一下:一、提取题目 Dim m=shanhai.getuixml()dim arr=ShanHai.RegexFind(m,"text=""([^""]+)")方法和制作题库一样,这里就不重复了二、比对题库,找到正确谜底的文字内容先将文本内里的json内容读取出来,然后通过下令转为“表”的形式。

Dim ku=file.read("/sdcard/pictures/题库.txt")Dim answer=Encode.JsonToTable(ku)然后,使用我上文提到的json提取方法,提取当前题目对应的谜底。这里为了大家看的清楚,我用了showmessage,在屏幕上停留的两秒钟,如果自己写的话,这一步是没有须要的。For 2 ShowMessage "谜底是:" & answer[arr(2)] Delay 1000 Next三、点击界面中的谜底对应的文字dim a=ShanHai.FindXmlKey(m,"text",answer[arr(2)],"bounds")dim zbarr= ShanHai.RegexFind (a, "%[(.-)%]")Dim zb=split(zbarr(0),",")Tap zb(0), zb(1)四、向左滑动,进入下一题Swipe x * 0.7, 500, x * 0.1, 500, 300代码如下:Import "shanhai.lua"Dim x=GetScreenX()Dim ku=file.read("/sdcard/pictures/题库.txt")Dim answer=Encode.JsonToTable(ku)For 20 Dim m=shanhai.getuixml() dim arr=ShanHai.RegexFind(m,"text=""([^""]+)") For 2 ShowMessage "谜底是:" & answer[arr(2)] Delay 1000 Next dim a=ShanHai.FindXmlKey(m,"text",answer[arr(2)],"bounds") dim zbarr= ShanHai.RegexFind (a, "%[(.-)%]") Dim zb=split(zbarr(0),",") Tap zb(0), zb(1) Delay 500 Swipe x * 0.7, 500, x * 0.1, 500, 300 Delay 1000Next总结一下:这篇文章的焦点是提取xml的文字,用到了一个不常用的存储形式json。

通过比对文字,找到正确谜底,完成答题。


本文关键词:亚搏体育app官网入口,自动,答题,剧本,教程,及,源码,分享,无视,之前

本文来源:亚搏体育app官网入口-www.cnyanmian.com