大家好,我是多多,欢迎大家观看我电脑端按键精灵第五十一节这节课呢,咱们继续讲行为检测里面的随机不重复数字。这个随机不重复数字是什么意思呢?他是说的是,嗯, 我们假设一个随机数,最小值呢?是零啊,最大值呢?是十,呃,在 循环这个循环读取随机数的时候,十一次内,十一次内,他每次读取的这个随机数都是不相同的,因为零到十嘛,因为零到十一共是十一个数啊,他是在循环读取的时候 循环十一次,每次读取出来的这个随机数都不相同。呃,假设说,呃,他是零到零到二十,零到二十的这么一个 零到二十的这么一个,呃,随机数范围他是二十一次循环读取这个随机数的时候, 他的读取的值每次都不一样,就是这么一个随机不重复数字的这么一个写法。这个写法呢,用在这个啊,行为检测里面用的是最多的。 而且咱们将来以后写写其他算法呢,也会用到这个啊,行为也会用到这个行为检测里 买的这个随机不重复数字。 呃,这个是这个算法是怎么写的呢?呃,比如说我们 就拿最小值为零,最大值为十这么一个啊范围的随机数给大家举例啊,就是我们定义一个数组,假设说咱们定义一个数组 a, 在数组 a 里面分别保存零、 一、二、三、四、五、六、七、八、九、十,这一共是十一个数组元素。然后呢,咱们再写一个随机数,这个随机数呢?呃,随机数的范围呢? 就是这个,呃,零到十,呃,第一次随机呢?比如说,假如说啊,假如说咱们第一次随机呢,随机出来这个五,随机出来五之后呢,咱们就把这个数组元素对应的 啊第六个元素给他读取出来,读取出来之后呢?呃第六的这个元素给他读取出来,读取来出来之后呢,咱们这个数组呢?呃,给他把,呃,把这个呃第五个元, 第六个元素位置啊,因为这个数组的最大下标是,呃最大下标呢,数组的下标呢是五,然后对应的是第六个元素位置, 咱们就把这个呃第六个元素位置给他删除了,删除了之后呢啊,他就会变成这个五 五七八,然后中间没有六,然后呢?呃对应的他的随机数范围呢?就是零到这个数组的最大下标,他因为没有,没有这个,呃元素内容,没有六这个位置呢,呃位置了之后呢,他这个 数,他这个随机数的范围呢?就变成零到九了。假设说这个零到九呢,再随机出来这个五,他读取出来的就是这个七了, 以此类推啊,以此类推啊,到最后呢,呃这个随机数范围呢,就会变成零。最大 值,呃最小值是零,然后最大值为零,然后 a 的这个数组里面呢?呃只会剩一个元素,对吧? 呃,这个是随机不重复数字的这么一个写法,然后呢,我把这个代码呢给大家敲一遍,大家跟着我敲一遍,也就懂了啊。然后呢,第一个第一步,咱们先写一个全局动态数组, 咱们假设这个,呃,假设咱们就是随机啊,随机零到十的这么一个 数组,呃零到十的那么一个,呃随机范围啊, 然后获取这个数组的最大下标, 这个就是循环把这个因为这个是变化的嘛, 然后循环把 a 里面的这个,嗯, a 里面的这个值给他,呃,保存在数组的这 这个位置里面,在这呢我给大家调试输出一下,给大家看一下, 嗯,这个还有这个,还有上面这个都讲过了,就之前的课都讲过了,在这我就不给大家讲了。 大家看一下这个呢,就是把这个 i 的值,嗯,循环保存在这个数组里面的这个数组元素位置, 嗯,这个是第二步啊,第三步呢,就是写函数里面放对应的函数值 在这呢,咱们给他定一个局部变量, 这个位置呢是零到十, 大家注意一下这个位置是加一的。上节课咱们讲随机数 数的时候讲过了, 第四步啊,删除数组里面对应的啊,随机数数组的位置, 这个删除删除数组元素。之前咱们讲过三节课在这呢我就不给大家讲了。这个,呃,大家看一下之前的那个数组删除的这个 教程, 咱们在这呢给它定一个 q, 然后让它等于这个 t, 嗯,随机数完了之后呢,咱们就把这个,呃随机不重复数字给它返回出来, 呃,然后它这个,呃随机不重复数字返回过去之后,这边,呃把它这个数组给它交换完,然后把 a 的这个, 呃,把 a 的这个动态数组呢给它剪一下。一 哦,我给大家说一下,正常如果括号是这个状态,你输入 u 是没法出现那个获取最大下标的,大家就把它 啊多打几次空格,然后再点下 u, 它就会出现这个获取最大下标,呃,这个命令了,然后把它减一下。 e, 咱们测试一下这个代码 啊。十一次, 嗯,稍微给个延迟,嗯,给二百吧,咱们试一下, 大家看一下啊。呃。一二三四五六七八九十,十一在十一次, 在十一次内,然后随机出来的这个数字呢?嗯,随机出来的这个数字个数呢?它是都是不同的,嗯,都是不同的。 大家注意一下这个细节 啊。咱们把这个延迟给他去了,给大家看一下。因为有的时候大家追求速度 啊,这也没有任何问题啊,大家看一下,也没有任何问题,因为有的时候你要单纯的用这个, 呃,单纯的用这个随机数的话,你的速度不能这么快啊,如果太快的话,他随机出来的这个数字很容易相同啊。你如果用了这个算法了之后呢?就没有这个问题了 啊。这个位置多少还是加一点延迟,加个一百, 呃。然后再给大家讲一下细节,因为咱们有的时候不可能让他循环十次,对吧?咱可能让他循环五十次,五十次的话,呃。他在第十二次会报错, 大家看一下,大家看一下。这个第十二次他就报错了,出现这个,呃。为了不让他报错,因为他这个 删到最后这个 a 的这个数组里面,嗯,只有 a 的数组里面只有一个元素了,只有一个元素。假如说这个元素随便写一个写个三,只有最后一个元素,最后元一个元素在这循环的 时候,嗯,他就会出错,因为这没法相等嘛。这个位置没法相等, 呃。这个怎么写呢?就是当,呃数组元素,对吧?咱们在这个位置,呃,加个判断, 当这个 a 的最大下标等于零的时候, 呃, a 的数组里面,呃, a 的数组里面只剩一个元素,所以它的最大下标一定是等于零的,等于零了之后呢,咱们让这个随机不重复数字呢, 咱们让这个随机不重复数字呢,等于等于这个 a 的最后一个 a 的最后一个元素。 呃,然后呢,咱们把这个呃动态数组给它扩充一下, 大家注意这个细节,这个细节是输入输入 u b 的获取最大下标 u b, 嗯,我也不知道这个单词怎么念,然后加个括号。 好,这个位置是,我看一下, 这个位置不是这么写,这个位置是输入十, 就是把这个 a 的这个数组呃继续给他。呃, a 的这个动态数组继续给他。呃,扩展到第,扩展到十一个元素啊,数组元素,然后再重新复制一下,呃,结束整个函数 这么写。然后呢?嗯,大家看一下, 这个就没有任何问题。这个对应的是第五步, 他是在十一次,一二三四五六七八九十十一。在十一次内他是不重复的啊,以下也是一二三四五六七八九十十一,对吧?大家看一下。 嗯,改成二十也没有任何问题啊。 然后呢,这个对应的位置,这个也需要 git, 二十 我就不数了啊,他肯定是二十次内,呃,就没有,没有什么重复的, 我看一下。然后 一二三四五六七八九十十一,十二,十三,十四,十五,十六,十七十八十九,二十二,十一。他在二十一次之内是没有任何重复的,二十一次,二十一次。然后这个 十三呢,就跟上面的这个十三重复了啊,这是二十一次之内就不会产生重复,这个是随机不重复数字的这么一个写法。这个代码呢也挺重要的,大家我建议啊,大家多敲个几遍啊?五遍以上,五遍以上, 这个代码我也是敲了好几遍,我当初学的时候,嗯,人家问这个,呃,随机话术要求不重复,然后还有这种,呃,随机点击不重复,就是写的这个随机不重复数字, 嗯,当然也有几年没敲了,嗯,当然我也有几年没敲了,我敲写的这个写法呢,嗯,都是他的变种,就是举一反三。但是这个这个写法呢,归根 到底就是他的,呃基础,其他的,呃对应的随机数的写法都是他的变种,都是举一反三出来的。呃,这个还是很重要的,建议大家,呃,多瞧瞧。 嗯,这节课呢,咱们就到这,咱们下节课,下节课咱们继续啊。下节课咱们讲一个,嗯, 数组的增山改查,咱们还差一个数组的增加,下节课咱们讲数组的增加,把数组的增加角了,然后数组的增山改查和 随机数的这么一个部分咱们就讲完了。大家看一下,这个是用的啊,数度的删除,这个数度的删除用在这个地方啊。我的教程是没有就说 啊,没有说没有,一节课是多余的,都挺重要的,大家看课程的时候不要跳着看啊,不重要的课我都不会讲,讲的都是重要的,咱们下节课再见。
粉丝1.2万获赞1.1万

好,今天我们来讲一个概念啊,叫随机数, 那他是我们在实际编码当中呢,会经常需要使用到的一个编程技巧啊, 因为我们很多的时候啊,我们需要在一定程度上尽可能的啊,仿真,我们的人物行为的话,仿真, 那我们啊就不能把那一些动作啊写的过于死板,比如说我们啊,在游戏里面释放一个技能,对吧?那我们释放技能他都会有一个技能 cd 啊,比如说啊, 一个技能 cd 如果是两点五秒,那我们在程序里面我们的通常编码习惯就是,比如说我们先放技能一,对吧,然后等待 两点五秒,然后呢,然后再放计量二,这是我们的编码习惯啊,当然这样没有问题啊,这样当然没有问题啊,不过你要想啊, 一个玩家,一个真实的玩家,假如说啊,我们在玩游戏的时候,那我们是不可能啊,人为操作 做到百分之百精准的啊,对吧?你不可能每次玩游戏的时候,你放两个技能,中间的间隔可以精确到毫秒啊,这个太夸张了,对吧?你每次 都是两点五啊,两点五秒放一个技能,两点五秒放一个技能,然后这个东西啊,这个行为就非常的机械化,一看就不是啊,真实的玩家操作,那假如说我们需要 达到仿真的效果,要以假乱真,那我们就需要借助随机数啊,好,我们可以在按键的 命令库里面啊,去找到一些啊,跟随机有关的一些函数啊, 但是这里你看它属于什么,这属于算法,这属于按键,它里面自带的一些算法,它可以帮助我们啊,通过一系列运算得到一些特定的结果,比如 说这个啊,这里你看下算法,随机数四串,然后呢,我们只需要给他指定一个位数,就可以返回一个啊,指定位数的随机数啊,我们可以 试试看啊,这是随机数字串,刚才我的断句有问题,随机数字串,因为他还有一个随机制服串。 好,我们来看看他能返回什么,比如说我们来给另一个位数位数,我们给他给定多少了,给定三位数,三位数就是百啊,最大就是九百九十九三位数, 然后我们返回只给他弹一下,我们调试看看啊 啊,六百六十三,看见没有?六百六十三, 拿八百七十五,对吧?我们每次启动了他都会有一个不同的结果啊,零九七,这是我们借助算法,借助按键的自带算法获取的随机数的方式, 那你们有兴趣的话呢,还可以去看一看他的其他的字的算法,有一些还蛮有意思的,比如说随机取姓名的,还有什么洗牌呀,中文汉字转拼音的。 但是我们可以发现了,我们这个按键自带的随机数算法,他其实是不够灵活的,因为他只能指定位数,他只能指定位数,假如说我们需要随机 一到五,对吧?或者一到六,那八和九啊,他都属于一位数,对吧?他都属于一位数的范围之类,但是我们不需要,那怎么办呢?对吧?所以我们还需要一个更灵活的随意数方法, 那我们就要用到今天的这个语句啊, randomize, 那它是什么意思啊?应该怎么用呢?我们可以看到下面有提示啊,有提示。好,我们看他说明呢,他的第一句话就有点不是太好理解。 randomize 使用 number 啊,参数作为初始化好。 r n d, r n d 就是随机的意思啊。 r n d 函数的随机数生成器赋给它的种子值,如果省 number, 则使用系统计时器返回的值作为种子值啊,作为新的种子值。也就是说什么意思呢?我们需要给他设定一个种子啊,这个种子呢是我们随机数生成的一个依据, 那我们可以缺省,他就是不使用这个种子,不给他设定种子,然后默认种子是什么呢啊?他默认种子就是我们的系统时间,我们的系统时间年月日还有十分秒, 那总值值是我们用来计算我们后面生成谁计数的一个依据啊。一个依据, 我们直接看他的语法怎么写啊?你看他下面有个范例,他这个范 案例的写法很有意思啊,我们以前都没有学过啊。他是一个什么意思呢?他是生成一个提示框, response 提示框,然后我们在一个度循环里面啊,一直循环下面的内容, 直到什么时候停止呢? anti 啊,直到我们的提示框被我们选择否的时候啊,被我们选择否的时候,它才会停止,因为它的提示是为我们 yes 或 no 啊, 好,我们来看看啊,看下效果,启动。好,他给了我们一个三,对吧?那他应该会问我们是否继续循环啊? real again 啊, real again。 来,如果我们选否, 我们的脚板就会停止,我们选四呢?他就会给我们一个新的随机数,我们选四,你看二,对吧?二四三,好,我们选 four, 哎,我们脚板就停止了。 好,他最核心的用法,你看,就在这里,看见没有? my value, 对吧? 等于 inter, 这是一个数字转换啊,数字转换 inter 就是强制把我们后面的随机数啊,转化为整数,转化为整数。六乘以 r n d, r n d, 它会产生一个随机数嘛? 我们用六与它相乘,就会得到从零啊,从零到五的一个随机数范围, 然后从零到五的一个水解数范围嘛,我们去加上一啊,就会得到一个一到六啊之间的水解数啊,这个就是我们水解数产生的一个原理啊, 所以如果我们去掉这个 int, 那我们就不会返回整数了,我们就可以返回小数,我们可以看看啊, 哎,你看见没有?三点二,一五零九六,一点六,三零幺幺,看见没有,对吧? 好,那我们要控制我们的小数点位数了。我们之前讲过数学函数啊,我们可以看到啊,它有个 run 的函数,通过 run 的函数呢,我们就可以控制 我们的小数点位数,比如说我们给它加一个,加一个,嗯,二,那这样呢,我们的小数点位数就只有两位。 好,你看五点五,一,三点一,八,二点一,对吧?

大家好,我是多多,欢迎大家观看我电脑端按键精灵第五十节这节课呢,咱们继续讲行为检测里面的随机数, 这个随机数呢最小值一定要为零啊。啊?为什么为零呢?我先给大家敲一个不为零的,给大家看看 这段代码呢,上节课咱们已经讲过了,在这呢我就不给大家重复讲了, 给大家看一下啊。呃,如果这个最小值不为零的话,他随机出来的这个最大值呢?呃,就可能,呃,也不是,就可能就肯定会大于,呃大于这个,呃最大值就是随机出来的这个 随机出来的这个最大值就大于咱们写的这个最大值了,就是这个随机数函数里面啊,这个写的这个最大值,大家看一下,有二十五,也有二十六, 也有二十一,二十四,二十五,嗯,这个肯定是大于二十的,所以呢,嗯,你最小值只要大于零的话,可能会 出现出现这个错误,所以一般情况下这个也不是一般情况下就是最小值,咱们一定要写为零啊,给大家看一下,写成为零的话啊,他就不会出错了,大家看一下啊 啊,大家发现没,呃,这个呢,就是呃零,但是呢,呃从零开始啊,随机数从零开始,但是呢他的随机数最大呢,直到十九啊,直到十九啊,他不是到二十,没有随机出来这个二十。 如果你要随机到零到二十的情况下啊,随机到零到二十的情况下,那你要把这个啊二十给他加一个一二十一,这时候呢,他随机出来的 这个最大值呢?呃,会有这个,会有这个二十,给大家看一下有这个二十,大家注意一下,这个最大值要加一, 他这个零到零,零到五之间啊,如果说你要随机零到五,也要把这个位置给他加一,加成六啊,如果咱们写零和五的话,对吧?给大家看一下,他没有五,他只有零到四, 大家看一下,只有零到四,所以你如果零到五的话,也是需要,对吧?需要加一他这个你看啊,他这个帮助 文档,呃时间比较,呃,帮助文档时间就比较,帮助文档时间就比较久了啊,他没有详细说明这个,呃,最小值和最大值的这么一个关系在这呢,我给大家说一下, 这个是零到六啊,零到五的这么一个随机数。 还有的话就是说,比如说咱们要写一个啊,咱们要写一个, 呃,最小值为十,对吧?最大值为啊二十的这么一个随机数,这个要怎么写呢?其实也挺简单的,你最最小值,呃,最小值为十,咱们给他算零, 然后最大值呢啊,咱们给他算十,算十一,然后给他加个十就行,这时候呢啊,加上这个十之后呢啊,他这个就是从十开始啊,到二十结束,因为他这个最大值要加一嘛 啊,给大家看一下, 这个是十,这个是十到二十的随机数的写法啊,其他的随机数呢啊,也是要呃,按照这么写啊,说大家写,写的时候要注意点,因为这个, 因为这个知识呢,也就我琢磨了大概是 是三四天吧,琢磨了半天,然后才给大家讲出来,也没有任何一个教程,嗯,专门讲这个随机数的,也没有人把这个细节给大家讲通了的,嗯,所以我就多琢磨了琢磨,嗯,给大家讲讲,把它这个细节给大家说一说。嗯。 呃。还有一个是随机延时的这么一个写法啊,这个就简单了, 呃,比如说我们写一个鼠标移动到 qq 的这么一个,呃,这么一个命令, 然后移动到 qq 延时一下,延时呢?随机延时。给大家敲一下,然后给他来个来个二百吧, 然后把这个随机数给他放上去,加个随机数, 然后这个随机数呢,你就给他从,呃,你就给他从零 啊,一般零到十就可以了。然后呢,呃,点击一下 这个呢就是随机延时的这么一个写法,嗯,有的可能是学过这个按键精灵的说,哎,这个我一看啊,我就会啊,也不是这个,你不用讲我也会。 那你不需要讲了,你就直接给我们讲些其他的,其实不是这样子的,他可能如果我不讲的话,可能你觉得你会了,或者说,呃, 你觉得你本来应该知道这个东西,但是如果我不讲的话,你可能就呃不知道这这么一个写法吗? 啊?或者说其实学我的课程的人大多数都是,呃,大多数都是萌新没学过编程的人,呃。所以很多细节的东西我还是要给大家呃,多讲讲,大家别觉得我墨迹啊。好多时候 啊,正是因为这样才能把这个细节给大家多讲讲,大家才能把这个东西学透了。 你你想想这个随机数在行为检测里面是最重要的,但是呢反而没有人去专门讲这个最大值和最小值的这么一个写法。这个这个也就是我第一个人琢磨出来,然后给大家讲讲, 嗯,没有第二个人了,就是我在互联网上找任何任何的教程,没有人专门讲这个最大值和最小值的那么一个写法,也就是我讲了出来。 呃,大家看一下啊,这个这个写法呢啊,这个写法就是,呃,随机延时的这么一个写法。 还有一个呢,是随机话术的这么一个写法 啊,随机话术呢?这个,呃,这个也简单,我给大家也敲一敲。呃,上节课咱们讲了,这节课呢,咱们另用另外一种方法来来把它写出来, 这个呢咱们可以用数组数组来代替。 这是 cg 定义了四个话术啊,可以把它放在数组里面啊。这时候呢,我们可以我再定一个啊,我再定一个 b 吧。 在这呢,咱们把这个数组给他,嗯,给他输出, 输出出来。这个呢?最大值呢?肯定给他改这个, 嗯,给他改数组的最大下标。然后呢在数组这儿, 我之前讲过有一个最小下标, 这个最小下标呢也是零 啊,我看 看一下这个最小下边也是零,试一下。 that's why 啊?咱们试试这个最小下边, 我记得好像是最小下标是零 哦,这个逗号是中文的逗号 哦,随便填个数 啊,这个最小下标都是零啊,所以这个位置呢,其实可以用这个最小下标。 咱们之前咱们也讲过,因为时间太长了,我有的时候我也忘了这么个细节的知识点 哦,在这其实就不用最大值和最小值。 嗯,我新建个文档给大家试试 啊,我把这个键给它改一下,启动热键给它改成 home 键, 然后试试。 哦,这个位置还需要加一个一, 嗯,这时候就没事了, 出来这个,呃,出来这个这个这个话术了, 大家呢把这个代码多敲敲,这些东西都是细节,多多也是花了,怎么 说要花了好几天琢磨出来, 然后呢有几个相关的这么几个命令库命令给大家说一下。嗯, 呃,他们在命令库里面有这么一个算法,在算法里面呢有这么一个随机取姓名。 呃,有这么一个随机取姓名。然后呢 啊?咱们把这个代码复制一下, 这个前面呢前面这个 m 开头的,这个是弹窗啊,我们不用弹窗,我们调输出就行了, 然后加个度循环。 呃,这个是什么意思呢?就是随机生成一下名字啊,给大家看一下 啊,有的时候你在打游戏的时候可以用这个随机生成名字啊。啊。新建游戏人物的时候可能会用的到。 还有一个是随机数字串,位数数字串 啊,咱们也是给他复制一下。前面这个弹窗,咱们就不复制了 啊,在这给大家 看一下。十六位,咱们不要这么长的,咱们给他来六位得了。 大家看一下这个是随机出来的,嗯,六个, 呃,六个数字啊,这是随机出来的六个数字, 还有一个呢是,呃随机自付串。 这个呢也给大家看一下, 我觉得这个也可以当名字用啊,有的时候新建游戏人物的时候,嗯,对吧? 又不是自己玩,也是游戏打金可以用这个方法, 大家看一下中英,呃,不是中英文,就是说大写字,大写和小写都有,这是随机字符串,这是六位,对吧?你要给他改个十位,他就是,呃十个字母, 大家看一下随机出来。嗯,还有的话就有一个洗牌,这个洗牌也挺重要的。 这个洗牌呢? 怎么说呢?其实用的地方也挺多的。嗯,我一般是把它用在 啊,我一般是把它用在加密里面,用的比较多。不过这节课呢,咱们不讲这个东西,因为对于你来说,对于新手来说太复杂了。以后再说。 呃,比如说咱们 cpr 输入一个,呃,输入一个数字啊,连续性的一二三四五六。然后呢洗牌就是重新把它打乱一下顺序,大家看一下啊,这个是洗牌。 嗯,这个是这节课所有讲课的内容啊,就是把这个呃随机数的一些呃 呃细节给大家说一说。呃,大家有什么不会的,可以加我的 qq, 也有我的 qq 群啊,都可以向我提问。这节课呢,咱们就到这,咱们下节课再见啊。


好,今天的开头有点不一样啊,这个开头是我自己啊开发的一款软件,它是用来浏览本地的图片和视频的, 我们可以自定修改我们的啊,图片内容和视频内容,还有那些菜单封面啊,这些都可以修改。关于这个软件,将来有机会的话,我会慢慢的把它的开发的全过程, 还有相关的配置和使用方法啊,都逐一上传。这个我们向大家说,今天我用这个软件呢,主要还是用来带入今天的课题, 就是不重复随机数,不重复随机数,我们可以看到啊,我这个软件他一页每一页上面有五个菜单,对吧?一二三四五五个菜单。假如说我现在有这样一个场景需求, 我需要让我们的程序自动的去啊,随机浏览啊,浏览一个,那我们应该怎么写啊?这里有五个,对吧?我们要随机浏览其中一个, 你可以看到我们把鼠标移动上去以后呢,我们的当前菜单就会放大啊,移开以后呢,就会缩小,对吧?所以我们可以啊,尝试看看控制我们鼠标,让他随机访问其中某一 菜篮,我们该怎么写呢?首先我们需要给我们的鼠标给他定一组坐标, 我们可以看到啊,我们的 x 坐标,在这个里面, x 坐标它是会需要不断变化的, 但是我们的 y 坐标啊,我们的 y 坐标他们是啊统一的,这是一样的, 所以说我们如果要随机访问我们其中某一个菜单的话,我们只需要让我们的 x 轴给他随机变换就可以了,我们的 y 轴呢啊,不用变,那我们在这里呢,把我们的 x 轴啊,给他定一个数组,我们的 y 轴 固定就可以了。那我们的 x 轴啊,我们的 x 轴,它这些数据是怎么来的?是我直接测量的啊,比如说你截图啊,剪到左上角,你看 他的坐标是多少?三零二五幺六啊,说明我们第一张图片呢,我们就可以给他挨个走了,设为三零二啊。第二张呢,可以设为啊六幺二六幺二,往后面呢啊,九幺六啊,当然了,这个数字是可以有误差的,因为我们图片有这么宽吗?对吧? 所以说我们就简单量了一下,给他定了五个坐标,这是我们图片的 x 坐标。好外坐标呢?五百五十五啊,五百五十五差不多,只要可以到这个图片上面就可以了。好,那我们如果要随机访问 其中某一张图,我们可以怎么写?还记得昨天的内容吧,我们昨天说这个对吧?它是产生一个一到六的随机数,让我们来改一改,先把它注视掉, 然后我们让 my value 等于什么?等于 in 啊?我们这里只要取整数就可以了 啊,注册掉 in, 然后呢?用六 乘以 round 加上,这都不用加了?这都不用加了, 直接搞五就可以了。他这样就可以返回。什么?返回?从零到四的随之数,从零到四这个数组呢?这个数还有五个值,对不对? 他的最大下标就是四,他的最小下标呢,是零,所以正好他就可以正好把它覆盖掉。那我们只需要让我们的鼠标移动到我们的 其中某一个上面去就可以了。其中某一个元素 my value 嘛,这是 x 坐标啊,然后第二个参数呢,是 y 坐标, 只需要这样就可以了,我们还可以给个提示,把我们的 value 值 给弹出来看看。好,我们调试一下看看啊,我们按下 f 十。 那你看四四,他这个四不是说第四个啊,他说的是我们的下标值是四,我们数组下标值是四的话,我们数组是最后一位,他应该跳到最后一个啊,我们把点掉,我们鼠标应该跳到最后一个。 好,我点确定。哎,看见没有?我们随便过去了。看见没有?他最后一个啊,他是这个意思,让我们再试试看呢。二啊,二是第几个?二是第三个。中间这个 啊,二,哎,又是二,看见没有?又是二啊?三,三就是第四个, 第四个,对吧?那虽然没错,那如果我让他随机五次了,随机五次,我们来观察一下他的随机值, 第一次是四啊,第二次是二,第三次你看又是四 啊,还是四?一,你看见没有?他的零啊?他的零和三就没有出现过啊?就没有出现过,而且他有重复,我们的四重复了三次,看见没有啊?这就是问题所在啊。 假如说啊,假如说。我希望把这五张图片随机访问一遍,随机访问一遍,但是呢,每一个都要访问到 啊。访问五次,每个都要访问到,那就不能有重复,对吧?我们访问五次,每个都要访问到,并且是随机的,那就需要指定一个随机的不重复的数字啊,一组一组随机不重复的数字,从一到五, 或者从零到四,他不能重复。每次生成完以后呢,我们就要把这个数字给剔除掉,不能够再用了。那我们应该怎么做呢?好,我们先直接看效果啊,我们先直接看效果,比如说我现在启动 嘿,看见没有,那我们所有菜单都被浏览了一遍,并且是随机浏览的,看见没有啊,而且没有重复,对吧?我们再来 再看一遍,第二个,第四个,第一个,第三个,第五个来,你看对吧?没有重复。那这个算法我们是怎么实现的呢? 我们来看一下代码啊,我们可以看到前面的代码还是我们的坐标数据,这一块就不用说了,然后后面我要一块注释,以下为生成不重复随机数的算法, 从这里开始,一直到最后啊,到这里, 那我们可以看到啊,它这里有很多写法是我们以前没有见过的啊,比如说 dim, a, b、 c, d 啊, x, 它作用逗号隔开,它的意思就相当于是一次性生命了,五个变量,只不过以前 我们会写五行,对吧?我们会这样写啊,但是这里呢,我们就偷懒了一下啊,偷了下懒,我们直接一行把它写完了,包括后面这个也是也是一样, 如果我们按照以前的写法的话,应该是先声明,先声明 d, m、 x, 然后 x 等于五啊,分两行,后面再写出四, 这里也是一样,这里是也是一样。我们用一个双引号把这个注射写在后面的,没有用斜杠,但是你用双引号写注射的话呢,我们前面就需要用这个 u z 八, 不能用 dm 了,这是一种语法格式,一般来说的话,我们还是固定用这种格式啊,这种还是比较少用少用,只不过呢,你要知道有这种写法,你看到这个东西的时候呢,你不会说看不懂,可以这么写。后面呢,我们复制的时候一般都是啊,分行复制,对 一个 a 等于零,写两行啊, b 等于空,这么写这里也是偷懒了,其实这个也不能说偷懒,因为这个操作上你还要多写一个双引号啊,还多写一个冒号, 他这里也是一样,就是把变量进行了复制,这是一些写法上的不同,你们只需要了解就可以了。我们平时还是跟以前一样啊,用 dim 声明,然后另起一行复制,这里只是让你们看一看,可以这么写。 那后面呢?后面其实就是对字符串的,主要是针对字符串的一系列操作, 他的逻辑就是我们先用我们自定义的一些数字啊,数字上线是五吗?对吧?我们就会随机生成一个零到四的一个啊,一个支付串, 我们用逗号隔开,我们之前学过一个函数啊, speed, 它可以用逗号把我们的啊作为一个分格符, 把我们一个支付串呢,返回成数组。 c 到这里来的时候呢,就已经是数组了, 好吧,然后呢,我们这个手艺数生成器啊,前面用 int 强制转换成了整数型, 它的最大下标啊, u 忘了,是返回 c 的最大下标啊,就是四乘以垂直数。 其实今天这个算法呢,对于初学者来说,理解起来还是有点难度,有点难度,你们就随便看一看啊,浏览一下,看一看,但是我要告诉你们应该怎么学,假如说你的话,一个代码你看不懂, 看不懂那没有关系,我们可以逐句的,什么逐句的调试,比如这里,对吧?我们看不懂,那怕什么呢?对不对?我们可以直接这调试语句对吧?我们大不了把每行全部调试出来是不是?你看, 我们可以每一行逐句调试,你把所有信息全部调试出来看一看嘛,对不对?看一看,然后再多看注视。你看,我们每个函数里面都是有说明的,看不懂没关系啊,我们可以逐句的看数字 啊,能调试输出就调试输出,我刚刚说过这个 c 的数组啊, c 的数组,所以说这里呢啊,我们就不能写 c 啊, c 的返回不出来的,我们直接写 c 的下标,你可以每一句都看一看, 只要这样呢,逐渐的去调试啊,逐渐的去看我们的说明啊,你自己才能进步,知道吧。但是退一万步说啊,退一万步说,有些时候啊, 一些比较深奥的东西,对于初学者来说比较难以理解的东西,你前期也不用去理解,你只需要知道怎么去用就可以了,你只要知道怎么去用, 我告诉你这些代码它的作用是什么,它是生成不重复随机数,对不对?那你不理解怕什么呢?你直接照抄一遍,照抄一遍, 然后知道我们返回的随机数在哪里了,在这里就可以了。 cd, 每次我们返回随机数的时候啊,就这个, 就是这个。我今天主要是想,嗯,告诉你们一个观念啊,就是在我们学习编程的过程当中啊,我们常常会碰到一些啊,比较晦涩难懂的一些算法,一些程序,我们看不懂, 但是不要去纠结啊,假如说你在学习过程当中,你发现有些东西你看不懂,看不懂也不要去死磕,先跳过,就跟你学数学老师教你的一样啊,碰见做不会的题目怎么办?考试的时候那肯定不会鼓励你去死磕啊,你先去跳过 你先跳过这个题目啊,不会做没关系啊,等你将来慢慢成长了,慢慢水平提升了,你再回头去看那些题目啊,你会发现啊,原来就是这个意思, 对吧?所以编程也是一样啊,我们学习编程的时候不要碰见一个困难的时候就死磕,先跳过啊,先跳过我们前面的节目。其实按照我的啊教学 教学顺序来说的话,应该是难度上啊,应该是循序渐进的,应该到目前为止都是循序渐进的。但是啊,不排除你可能在 碰到某些章节的时候会有理解上的困难,会碰到一些你看不懂的东西。这个很正常,因为这本质上还是要学习一门新的语言,他的逻辑方法、思维方法。他的逻辑思维方法和我们的 自然语言逻辑思维方法完全不一样,对于我们的很多数学来说非常的不友好,但是没有关系,没有关系, 学以致用,我们的本质目的是要去用,我们本质目的是要去用,对不对?万一你碰了不会的跳过,但你要知道怎么用,比如说这块代码是吧?我们今天的目的是要学会如何生成,不重复谁接触? 让我们刚才演出来生成了零到四的,那不重复首页数。假如说我现在需要生成零到九的,我们应该怎么去改这个代码?我们直接复制,然后新建一个空白角本, 然后粘贴。我把后面的删掉啊,我们这里不控制鼠标了,都删掉。你看每一行代码我都让你浏览一下,都浏览一下,你看一下怎么去写,他们照着抄一遍,照着抄一遍,然后改什么参数呢? 改这里把它改为十,我们就可以生成零到九的,不重复谁计数了。 那我们可以在这里啊,在这里给加一个调试输出语句啊, 当前获取的随机数四,然后冒号。好,我们调试输出。 哎,你看我把下面的内容啊复制粘贴一下,复制粘贴一下。 好,我们随便打开一个文本文档啊,对,你看当前获取的垂直数是几啊?九 五三七四二六八一零对吧?啊?一二三四五六七八九十对,正好十个数一数。 所以今天的代码呢,不需要你们去看懂啊,只需要你们知道他是怎么用的就可以了。 你把它抄一遍啊,然后呢保存好,下次用的时候呢,直接复制粘贴,然后就改参数就可以了,然后知道我们去哪里获取啊?在这里获取看见没有?就是这个意思啊,所以我们以后学习的时候啊,也要养成这样的一种观念, 不要去苛求自己啊,去理解别人写的每一句代码。没有这个必要啊,没有这个必要,因为大神太多了啊,我自己不是大神啊, 别人写的算法我常常也看不懂,但是我只要知道他的目的是什么,最后我会用就可以了,我只需要做到这一点就足够了,对我来说就足够了,你们学的时候呢,也可以秉承这样一种观念,只要你可以拿来用的话,那就够了。 好,我们最后呢带你们看一看这个我自己开发的软件啊,带你们浏览一下,如果你们有兴趣的话呢,可以去屏幕上方显示的这个下载地址啊,自己去下载去玩一玩啊,去看一看。我把声音打开一下啊, 你们就浏览一下。

各位观众大家好,我是库尔文展这一期视频的话呢,我要介绍一下 imi 配置文件的读写, 什么情况下我们会用到 i 格式的文件呢?比如说我这里有一个 qq 后台刷屏脚本 v 四点零的小精灵,是我在按键精灵第三十二期的时候制作的,那么打开这个小精灵,然后你们现在可以留意我的桌面,他是没有这个 ii 配置文件的, 可以看到我这个桌面是没有任何 imi 格式的文件的。然后我现在点击这个小精灵底部,这里有一个保存设置的按钮, 我点了一下之后,桌面这里马上就会多出来了一个 user one, 点 i n i, 打开这个 i n i 文件,可以看到里面有一些信息,可能这样看还不够明显啊, 我现在往这个输入框输入一些内容,比如说窗口标题是 a, 然后发送内容我就填 b, 然后我再点一下这个保存设置, 这个时候我再打开这个 i n i 文件,你们就可以看到这个文件记录了我刚才输入的一些东西,那么其实 i n i 它就是初始化的英文单词的缩写,所以 i n i 文件的作用的话呢,其实它就是可以初始化一些参数。 比如说我刚才打开这个小精灵的时候,窗口标题和发送内容都是空的,那么我刚才保存过设置之后,我现在把这个小精灵关掉,然后再次打开, 那么他现在的话呢,就有一个默认值 a 和默认值 b, 如果我把这个文件删掉,然后我再打开, 那么这时候这两个空间一样是空的。好,我现在重新创建这个 i n i 文件, 那么乍一看的话呢,这个 imi 文件和普通的这个 tst 文件他没有什么区别啊,实际上的话呢,他们也确实没有什么区别,这个 imi 文件他跟普通的 tst 文件一样,都可以直接用记事本打开, 然后可以直接手动编辑。我个人感觉的话呢,这个 imi 格式的文件啊,更多的是为了去声明一种格式。首先配置文件可以按需要分解成若干个小节,用这个中括号来表示, 然后每一个小节下面都可以有若干个键值队,比如说 id 等于库王文展,那么这个时候 id 就是他的键, 然后他的值就是库房文载,然后个人网站等于三 w 点库房文载 doco, 这里要注意小节的名称不能重复,然后同一个小节下面的界名也不能重复。 因为这个 imi 文件他有固定的文件格式,所以程序就可以按照预先约定好的格式来读取内容,非常的方便。 虽然说在案件经营里面,只要你严格的按照 imi 文件的格式来编写 tst 文件,也是可以当成 imi 文件来用,但是我是十分不建议这么用的,你要写配置文件的话,我就建议你用 imi 文件就不要搞个 tst 文件来写这种配置。 那么格式介绍完的话呢,我现在就开始敲代码了,打开按键精灵,直接在全部命令这里搜索 imi, 可以看到在这个插件命令文件插件下面,这里有这个 i n i 文件的读写命令,那么我首先就讲这个写入的命令, 这里一共有四个参数,首先第一个参数就是他的小节名,第二个参数就是他的键, 第三个参数就是它对应的值,然后最后一个就是它的路径,我自己打算把这个文件放在底盘,然后按键进入二零一四这个目录,下面 靠这个点 imi 保存一下脚本,然后进入调试,可以看到我们现在这里是没有这个文件的,然后我按 f 十执行一下脚本之后呢,他这里就会自动生成这个 imi 文件,其实他 这里也写的很清楚,文件不存在的话呢,他会自动创建的,然后我们再打开这个配置文件,可以看到他生成的这个内容和格式的话呢,都是我们预料之中的。首先是这个小结,小结我们就定一个小结,然后这个是建议对应的就是他的值, 我们把它关掉,然后这个时候我们把这个值改一下,改成值一,再执行一下, 那么因为这个文件已经存在啊,然后这个小节也是存在的,包括这个键也是存在的,所以的话呢,他就不会再创建这个小节,或者创建这个键了,他就会直接把这个值更新掉。 如果这个键不存在的话呢,比如说我这里是键二,那这个时候他就会把这个 键写入,就是这样接下来再写这个读取 i n i 配置文件, 其实读取 i n i 配置文件的话呢,我们主要的目的就是要拿到这个值,所以的话呢,它这里是有三个参数,第一个是指定这个配置文件的路径,然后通过它的小节名还有这个界名来获取它它的值。所以我这里再次强调一点,就是 小节名不能重复,然后同一个小节下面的这个界名也不要重复,否则你或许的时候可能会出问题, 特别是手动编写这个 imi 文件的时候。当然如果你这个配置文件是通过程序来创建的话,一般就不会有这个问题了。我们把这个参数复制一下,我们 就是要读取刚刚创建的那个 i n i 文件, 然后这里的话呢,读取的值就返回给这个变量,然后我这里的话呢再把它输出一下,然后把第一行注视掉,这个时候再调试一下, 他这里输出来的就是值一,跟我们这个配置文件里面的值是相同的,这个就是我们想要的结果,可以说是没有任何技术难度的。但是最后我有一个大胆的想法,就是怎么样把这种 imi 配置文件的作用发挥到极致呢? 结合我上一期写的这个 qq 后台多线程脚本了,可能有人已经想到了,为什么我那个多线程脚本不做 qui 界面呢? 其实还有一个很重要的原因就是做这个 qi 界面实在是太麻烦了,如果我要同时给五十个人刷屏,那这个界面怎么做吗?但是有了这个配置文件的话呢,就不一样了, 要给五十个人刷屏也可以,我直接给他每个人安排一个小节,你要给多少个人刷屏的话,直接就把这个配置复制多少份,改起来也方便的很。 ok, 那么这期视频就先到这里,谢谢大家。

各位观众大家好,我是酷玩文仔,那么这一期视频教程的话呢,主要就做一个比较通用的文字识别教程。 为什么说这种方法比较通用呢?因为他是几乎可以应对所有不同的字体,不管你这个字体是系统自带的什么微装牙黑宋体也好,还是说别人设计的一些特殊字体也好,基本上这种方法都是可以应对的。 然后我这里首先要介绍一个概念,就是说文字识别,他其实本质就是这个图片识别。所以我们这期视频教程的话呢,他写的代码其实 跟以往的图片识别是同一套代码,只不过说他这个关键是在于这个图片的处理。我们知道他这个文字都是有一些 线条来组成的吗?但是他这个线条与线条之间呢,都会有一些间隙,这个间隙的话呢,就直接把这个背景的颜色给暴露出来了。这就造成了一种情况,就是说 我相同的文字在不同的这个背景图片上面,他表现出来的整张图片是不一样的, 所以用我们的传统的这个图片识别的话呢,他是不能够识别到这个文字的,因为他会受到这个背景颜色的干扰。那我们怎么做到让程序忽略这个背景色,仔细识别这个文字的线条本身呢?这个关键就是在于我们去处理这个图片, 然后这个处理图片的工具的话呢,当然可以使用我们这个比较熟悉的 photoshop, 但是因为我们这期视频 需要用到的这个功能过于简单了,我们甚至可以不用 photoshop 这么高端的工具,我们甚至可以用这个系统自带的附件,这里有一个画图工具,我们甚至可以用画图工具来完成今天晚上的这个脚本。 那么首先的话呢,我这里就按一下这个截屏键,按键抓抓这里的话就会有一个 图像,这里就会把这个屏幕截下来。然后我现在的话呢,就要识别一下这个桌面上面的文字,比如说我想识别这个微信这两个字,那我首先当然就是把微信这两个字把它截下来, 未图另称为。然后我自己的话呢就先按传统的这个找图 图方法试一下。首先把微信这个图片的话呢拖到这个附件目录这里, 然后写一个简单的这个找图的脚本,然后我这里的分辨率是这个全高清的幺九二零乘以幺零八零, 然后改一下这个文件名, 然后这里如果找到的话呢,首先是鼠标要移动过去, 然后移动鼠标这个的 可能视频看的不是很清楚,所以我就再加一个弹窗的命令 啊,然后保存一下脚本,保存退出好,执行脚本好找到没有问题,因为的话这个文字它本身就是在这个位置,所以我连这个背景一起截下来的话也是没有问题的, 那么现在我就把这个微信把它移到这个地方,这里的话这个背景颜色很明显,刚才是比较黑的,现在变成了一个偏白色的背景色,那么现在执行脚本的话,他就没有找到了。所以说这个传统的找图方法的话呢,一旦换一个背景就不行了, 我们现在就要把这个图片做一下处理,至于怎么处理呢?这个我们要根据按键精灵找图的逻辑来推。 首先的话呢,按键精灵他找图其实说白了就是一个像素,一个像素这样去匹对他的颜色是否相同,如果都相同的话,那就肯定找到。然后如果有个别像素的颜色不同的话,这个时候就取决于你找图的时候设置的那个相似度。 那么在他一个像素一个像素去匹对的时候呢,有四个位置的像素点是比较特殊的,他就是这个图片的四个角落,如果这张图片的四个角落他的颜色都是相同的话,那这一种颜色就会被视为背景色, 然后他在匹对图片的时候就会自动忽略掉这种颜色,就是说背景色他是会自动忽略掉的啊,那我现在的话就来处理这张图片,首先的话打开这个画图软件,然后把这个图片拖进来就可以了,然后拖进来之后呢,这里图 图片太小不能处理,就在查看这里把它放大。然后我这里的话呢,有这个网格线是可以看到每一个像素点的,然后默认情况像素没有的,所以这个网格线这里这个勾一定要打上,这样的话我们就可以清楚看到每一个像素。 然后这里的话呢,我们虽然看起来他的这个背景色好像都是黑色,但是他这里其实有一些微妙的差别,我们肉眼看不出来,但是他程序判断的话,他只要判断到有一点点差别,他就认为这个不是背景色。所以我们这里的话首先要用这个铅笔工具, 因为铅笔工具的话,他一次只能够点一个像素,这样的话会比较精确。然后我们随便选择一种颜色,不管你这里选什么颜色,因为我们最终都是要把 把这个颜色变成背景色的,而背景色他会自动忽略掉,所以这里选什么颜色都都没所谓。接下来当我把这四个角落的点都变成相同的颜色的时候,这种颜色就会变成背景色。然后找图的时候, 只要这个位置他是这种颜色的话,他就会忽略掉这一个位置,就是说这个位置不管他是什么颜色,他都不会去管他是否匹对的上了。所以我们接下来就要把这些无关紧要的地方,把它全部变成背景色, 然后我现在把这些所有无关紧要的位置全部变成背景色,这样的话他在找图的时候就只会去判断这个线条。这个图片处理的话呢,你可以稍微做的精细一点,也可以随便 互一下就完事了,这个就取决于你这个找图的时候设置的这个精确度,如果你这个相似度设的比较高的话,那你这个文字处理就要相当仔细了。 那如果你这个相似度比较低的话呢,你在处理的时候就可以把一些很细微的地方把它忽略掉。那我这张图片的话呢,就大概处理成这个样子应该差不多了,因为我这个相似度给的是零点八,所以也没有必要吹毛求致,把它每一个相似点都点了很清楚。 然后我现在的话呢,就把这个图片把它另存为微信,然后后面加一个这个文字识别保存。然后的话呢,还是要把这个图片把它拖到这个附件栏这里, 拖进来之后呢,这个文件名也要改一下,然后保存退出 啊。我现在按 f 十直行脚本,然后他马上就找到了,他找到的位置是这个微信截图, 这个是跟他的找图顺序有关系的吗?我之前的视频也说过,他找图的话是从这个屏幕的左上角开始,然后按从左道路的方向这样去扫的,所以他第一时间肯定是扫到这一个。那我现在把这两个截图把它删掉, 然后我再找他就找到了这个微信客户端的程序,然后我现在把这个微信拖到之前那个位置,现在这个背景颜色已经变得比较白色了,然后我再按时他还是找到,这就没有问题,不管我移到哪里他都可以找到。 最后的话呢,顺便说一下,这种方法的话,不仅能够用于这个文字识别,甚至是一些半透明的图片,他也可以这么处理。比如说这个服务的这个一个图标的话,他两个齿轮中间这两个孔他是透明的吗? 所以我们如果要找这个图的话呢,可能是需要把这个齿轮截下来以后,把这个四个角跟齿轮中间这个孔都把它涂成同样的颜色。反正你们就记住,处理图片的时候, 要识别的地方就把它保留下来,不要识别的地方把它全部统一涂成相同的颜色,这样就可以了。 ok, 那么这期视频的话就暂时先到这里。

大家好,我是天峰,今天我们来讲这些内容逐字输入之前的教程内容了,我讲那些登录账号密码的时候用的那些输入方式,就是 input test, 然后输入账号用这种方式来输入。好,我们看一下是什么样子, 你看这里一下子就输入好了。这种方式有个好处就是啊,比较便捷,比较快速, 有他的弊端就是如果这个游戏后台那个程序员啊,扫描我们的后台操作的时候,发现我们是这样子,一下子输入好的话,他大概率会判断你这个是脚本的哦,所以的话,我现在就写一个函数 去模拟人啊,人的手在那个屏幕上敲击键盘的时候,那个操作,输入账号密码的操作,而且输入账号密码那个延迟那个时间,键壳也是随机的。 好,我直接调试一遍给你们看吧,这个就是我写好的函数,然后把这个账号传递进来,输入他的那个输入间隔,我们给他一秒钟的时间, 我们看一下这里, 你看一个一个字去打的, 而且每次输的间隔都是随机的, 像这样子的话就可以呃,绕过那个系统的检测啊,就不会判断我们是脚本了。好,我直接给大家看一下个代码吧。 啊,这个大一码的话,首先是定义这些变量,当前字符还有随机延迟,还有最大值,最小值, 我们这里的话就是用这个后循环,从一到这个字符算的最长的位数,每,呃,每循环一次的话,我们就输入一个字符啊,这里话就是重置我们的随机种子啊, 就是说把那个随机树给归清空归零啊,就是这样子重 这我们的随机数,然后这里的话就是,呃,输出一个随机延迟, 这里话我这个就是随机数的,嗯,那个曲值了,这个可能有点复杂,这个你们我实在不懂话就照抄一下,或者调用我的差那个函数,这个不用太 他去深究吧,这个时代有点复杂,就是说在这个输入间隔的五百毫秒上下 去啊,选取一个随机数,如果你是一输入间隔是一千的话,就是在一千五到啊五百之间输出一个随机数,然后这个当前字 的话,就是你现在要输入的那个字母或者数字啊,这个命令的话就是读取这个字符串指定的啊,字符啊,首先这里就是字符串, 然后这个 i 的话,就是你循环了到第几个字符了,就是这个 i 啊,这个 i 是一的话,就是输出第一个字符,如果 i 是二的话就输入第二个字符,就这样就就是这个意思。然后的话还是用个银 protest 啊,输入当前字符,一个一个来输入,然后延迟的话给他一个随机延迟啊,啊,就是这么使用的, 我们看一下怎么去使用吧。首先你们去我的 网盘啊,这个付费教程的网盘,第六个文件夹常用函数啊,下载这个最新的常用函数,下载之后就点这个导入 确定,然后放。呃,我放在这里了,就是这个你们复制过去就行了,复制过来之后,然后复制他名字, 这里我们先要给他定一个账号, 嗯,随机输入吧,大写小写都可以的,然后把这个账号放进来,传递进去, 然后输入间隔,我们就给一千毫秒啊,这样子就可以了,非常简单。我们再看一下, 你看正常人输入账号密码就是这种情况的,一个个来。 好,这节课的话就讲到这里。

好,我们今天来讲一下关于文件的读写啊, 我们常用的文件格式啊,就一般来说,我们自己编辑的话,我们如果要编辑文本,最常用的格式啊,一般是 gs 本,也就是文本文档, 我们可以看到它的后缀名是点 t x t, 点 t x t。 那如果你看不到的话,你可以去网上搜一下啊,如何显示文件的后缀名? 那我们可不可以去啊,读取这个记事本里面的内容啊?假如说我这里写一个内容,好吧, 我在这里写了一个时间,二零二三年三月十八日九点四十五分啊,五十二秒,然后我把这个记事本改个名字吧, 我叫文本读写测试。然后呢,我们用右键点一下这个文件,我们看下它的属性啊,看属性 这里有个路径,对吧?那你看这有个路径呢,我们把它复制一下,然后呢我们在我们的程序里面把这个路径给他指定一下,我们还是声明一个变量啊, 然后给这个变量复直, 那这样够不够啊?这样的路径还不够啊,还不完整,他只是我们的文件所在的路径,我们还要把我们的文件的名字 和我们的文件的后缀名全都把它写过来啊,我们的后缀名是什么?是 t x t, 像这样,这样我们才是把一个完整的文门路径给学好了。 然后我们可以去看我们的插件命令啊,插件命令我们去找一下啊,这里面有一个叫 file 文件插件。 然后呢我们可以去找一下,它有很多的命令啊,它有很多的函数,你看这个函数啊,叫 read, 对吧?顾名思义啊, read 就是读取的意思,对不对? 然后我们看一看啊,它还有一个叫 red, 它 red 函数有几个啊?这里还有一个 red。 好,我们看这个 red, 它比上面的 red 还是多了一个啊,多了两个字母, e x e x。 一般我们把这种 e x 把它称作加强版的意思,好吧?啊,或者叫扩展版吧,叫扩展版啊,严格来讲叫扩展版比较严谨一点。那我们可以看一下这两个函数它有什么区别? 他都叫 reaffile, 对吧?都是读取文件,但是有一个有 e x, 有一个没有,我们把鼠标停上去,我们可以看到他的显示后面有说明。第一个是啊,从文件当前的读写位置读取一定长度的内容, 你看还有两个参数,一个文件句柄,还有一个呢啊,还有一个是读取长度。什么叫句柄啊?什么叫句柄?这里的句柄就有点,之前我们啊学习了那个对象的意思啊,我们上一堂课 讲是什么?讲是大漠插箭,我们在上一堂课里面讲了累和对象,对吧?我们讲到这两个概念,这里的句柄就有点啊,类似于我们这个对象的意思啊,你可以这么理解。好吧,就这么理解,这个句柄就是我们的对象。 那我们后面这个呢?你看他的参数是什么?他的参数就是文本内容,他的参数就比较单纯,就只有文本内容。 那我们的目的只是啊读取这个文本的内容,对吧?所以我们就不要搞那么复杂啊,他只有一个参数,而且他参数呢比较简单啊,那我们就用它, 我们可以试着给他一个内容,然后我们可以看到啊,我们可以看到在左边下 他有一个调用参数和一个返回值,他既然有返回值可以写的话,那说明这个啊,这个命令他可以给我们的变量复值啊,因为这里可以有返回值。假如说我们在这里给他一个变量名称的话,我们点插入,你看 他会设成这种格式,他会直接把读取的数据复给我们的变量啊,复制给我们的变量,所以我们可以这么写啊,我们内容, 我们要这个文本内容啊,直接等于我们这个插件的 read file e x 啊,函数,因为它有返回值嘛,对吧?它要返回值我们就可以复制,那这样呢,我们就可以获取到我们的 这个文本内容,那我们把它调试输出一下,好吧,调试输出一下, 我们点启动,哎,你看有问题啊,对吧?二零二三,然后后面是乱码,对不对?他的数字没有问题,但是他的汉字,汉字是乱码,看见没有? 我们再用 messy box 啊,再弹一下看看。哎,你看二零二三,他的年月日都是乱码,这个怎么办? 这是我们的记事本编码问题啊,我们可以把我们的记事本打开,然后文件然后另存为, 我们可以看到下面呢,他有一个编码的格式,我们要选择什么?要选择 a n s i, 我们只能选这个格式,我们的按键呢,他才能够去识别我们的中文啊,我们点保存,他问我是不是要覆盖他,好,我们点试 关掉,然后我们再调试,哎,你看二零二三年三月十八日,对吧?这样就没问题了,是不是? 但其实呢,那我们这样又出现了一个新问题,你看他的文本内容,他是不是我们要的内容? 他不是啊,你看他后面有一个小竖线,看见没有?他有个小竖线, 我们的文本里面有没有? 没有啊?你看没有对不对?所以我们还要做个处理。那我们的这个文本呢?它读取出来之后呢? 它的数据类型是什么类型啊?是使俊类型啊?是使俊类型, 那使俊是什么?是字符串对不对?所以我们要找字符串的命令,我们点旁边的全部命令,我们搜索字符串, 搜索命令,他这里有个字符串长数,我们不要看这个啊,这个没有用,我们去看另外一个字符串函数,哎,对了,我们就用到字符串函数,字符串函数 就是专门针对支付串来操作的啊,一种函数,他这里面的函数类型呢,都是操作支付串的,所以我们需要借助我们的支付串函数工具,把我们的这个小数线呢?啊,把它给去掉。 那我们可以用什么函数呢?我们去看啊,他有些函数就是字面意思,好就是字面意思,有的是缩写的啊,是简写的,你可能猜不出来是什么意思,但有些函数他是用了整个的单词, 我们可以一眼就看出来啊,他是干嘛用的?比如说这里啊, replace。 replace 什么意思啊?替换,我们的目的是什么?我们的目的就是把这个竖线给去掉,但同时我们可以用另外一种思路啊,我们可以把它这个符号啊 给替换,给替换成什么?替换为空,替换为一个空白的字符。所以说呢,我们可以用 replace 函数,怎么去用它呢?我们点双击一下啊, 你看它这里有说明 replace 制服穿啊,被 t 制服穿。 替换支付串啊,什么意思啊?支付串就是我们的目标,支付串被替支付串啊,就是我们需要替除的这个支付串,就是这个。首先啊,替换支付串呢,就是我们想把它替换成什么, 我们可以把它替换成空啊,这什么也没有,所以说我们这个函数应该怎么写?应该这么写。 replace 文本内容 被替换,这幅串呢,我们打一个双引号,把我们这个小竖线呢,把它给加进去,你看,然后我们在后面呢,在替换完以后,我们重新再弹一下啊, 他报错了啊,为什么?因为我们的 replace 啊,他也是有返回值的, 那他既然有返回值啊,我们就可以把它复给一个变量,对吧?所以我们可以啊,重新再声明一个变量 啊,被处理过后的文本内容,对不对? 就写这里吧,我们 把它复给这个变量,被处理过后的文本内容, 我们再弹一下,看这样行不行。哎,你看,我们先弹出的是我们的文本内容,第一次弹我们的文本内容, 他是有小竖线的,我们点确定。哎,你看后面弹的被处理过后的文本内容,他还有没有小竖线,他就没有了,对不对?他就没有了。 好,那我们简单讲了我们的文件读取,那我们的文件怎么去写入啊?这个记事本我们还是一样啊,靠我们的插件命名在里面找我们的啊。 file 插件, 你看它第一个就是 right, 对吧? right 函数像配置文件里写一个键值啊,不过我们用的不是啊,配置文件我们写的是 g x t 文件啊,记事本文件,所以我们去找跟这个相关的函数啊,我们去找 writer file, 看见没有? writer file e x, 它跟我们的这个 red file e x 长得很像,对不对?我们就改了一个单词,把 red 改成了啊? right, 那所以说我们这两个函数啊,应该是匹配啊,应该是匹配使用的,那我们可以去试试看啊,怎么去用它? 好,你看我们把鼠标填上去啊,他有个提示啊,提示是什么?文本插件写入文本内容,后面的 参数是两个,一个是目标文件路径,还有一个是写入内容,那我们的文件路径就是我们的文本路径啊,我们可以直接把复制过来, 我们的文本内容呢?那你就可以随便写了,比如说我可以写一个时间,对不对?三月十八日啊, 然后我们再调试,我们启动,我们把这个给注册掉啊,他没有必要去弹了。好,然后我们去看我们的记事本, 哎,看见没有?看见没有?他确实往后面加了一条信息,对不对?二零二三年三月十八日啊,十点十九分十六秒,但是你发现没有, 他没有换行,对不对?他没有换行,他是接着往后写的,那这样有的时候我们如果写的信息太多的话啊,这样就不利于我们阅读,对不对?那我们不利于我们阅读。让我们怎么样才能 让他去加一个?回车了啊?加一个换行符,这个怎么加? 那我们如果要给我们的文本加入一个啊,换行的话,我就随便写点东西啊,刚才我把文本内容给删掉了, 然后我们进行一个启动,我们再看我们的文本,哎,你看他是不是就实现了一个换行,但是我们如果我们先把文件都删掉啊?好,我们 如果多次进行调试的话,你看我们每启动一次我们的文本啊,就会多一项内容,对不对?好,那我们再看我们的文本内容, 哎,我们可以发现我们这里的空格好像比较多啊,对吧? 其实我们设置的想法应该是这样子的,对不对?应该是这样子的,但是我们实际输出的内容啊,他是这样子的,他中间呢好像又多了一行,这个我们要怎么解决呢?好,我们先把内内容删掉, 然后我们这里我们先把这个新的知识点记下来,他叫什么?他叫换行图。 do we also? 换行的话我们还可以用什么?用回车符啊?回车代表了我们就输入一下回车,这两个都可以起到换行的作用,但是我们不管用换行符还是用回车符啊,在这里呢,我们都不能实现我们的目的啊, 我们可以试试看啊,我们去看我们的文本, 那你看我们都不能实现我们的目的,那我们怎么样才能实现我们的目的呢? 把中间的空格给削掉啊?怎么去处理啊?我们之前讲过什么?讲过大漠插件,对吧?我们讲大漠插件的时候,我们说到什么情况下我们叫用插件呢?就是在我们本身的啊,本身的按键的字 带的函数无法满足我们的需求的时候,我们就可以怎么样,我们就可以去尝试使用插件去解决我们的困难啊。之前我们是因为找图找不准,有时候碰见问题,所以我们用大漠插件去找图 啊,这里也是一样啊,我们发现我们这个文本的写入的时候啊,我们发现他无法实现我们的目的,那我们怎么办?我们就可以用大漠插线来帮我们去实现, 我们可以试试看啊,这里的声明呢和调用那我们就不说了,我们直接去写大漠。 大漠的话,它的是很多函数,本身就是针对按键精灵自带函数的一种升级和优化啊,所以我们的很多 大漠函数,他的名称跟我们的按键自己的函数名称,或者说他的插件自带插件的函数名称啊,是一样的写法,都是 redfire。 我们这里甚至都不用去加 e x 啊,都不用去加 e x。 后面的参数呢?那一样一样,就写, 我们把这个稍微改一改啊,顺序稍微改一改,把我们的连接符呢写到后面去,这样我们第一行了才不会有空行, 然后他的这个是有返回值的,所以我们需要有一个变量来接受这个返回值。我们前面可以声明一下啊,当然你不声明也可以 叫大漠啊,返回时, no, 这不是等哈删掉。好,我们用大末插件的函数来替代我们原有的原有的插件函数, 我们这么写,我们看效果怎么样, 我们的文本是空的,看见没有是空的。好,然后呢,我们去调试, 我们多按几下啊,哎,看见没有,这样就很完美,对吧? 让我们再看一看,我们把这个代码稍微再改一改,我们这里让我们系统自动带出我们的啊, 当前系统时间我们可以去找啊。左边的系统插件 system 啊, system 他用的是简写 sys 啊,没有写完整,然后我们去找他人啊, get date time 看见没有获得啊,得到当前系统日期和时间。 好,我们点插入,然后呢,我们直接把这个函数把它给贴过来。好,我们调试一下啊, 我们先把里面的文本内容给删掉啊。好,我们启动按下 f 十。好,诶,看见没有,我们每一次按下 f 十,我们都可以把当前的思想 时间把它给写进去,对吧?那这样呢,就可以形成一个时间戳。

好,关于鼠标函数的教程我们就先告一段落啊,我们已经用了啊,比较长的一个一个视频时间来讲了鼠标了,相关的内容呢,已经讲的差不多了,那我们现在就来讲键盘命令啊,键盘函数, 那我们学习按键精灵,我们学习这个东西啊,这个编程语言很大程度上我们的目的就是为了让他可以托管我们的键盘和鼠标, 来代替我们的双手去操作啊,去操作我们的电脑,我们的计算机,实现一些啊,自动化的功能啊,这就是我们学习这么语言最大的目的啊,所以说我们的键盘命令和鼠标命令是我们最常用的函数啊,那我们来看键盘 左边,你可以看到第一个就是键盘函数,键盘 mini, 我们在这里随便按下一个键盘上的按键啊, ctrl 也可以啊, shift 也可以,随便按下一个按键,然后点插入,你看他就会生成一个代码, 那这张代码它是什么意思啊?它就是那 k plus, 按下按下某个按键,你看我们鼠标停上去,它有提示的啊, 先按下啊,先按下再弹起,看见没有这个动作啊,这一个代码它其实包含两个动作啊, k plus, 你看他的提示啊,他的提示是先按一下再弹起啊,模拟我们平时的按键操作,也就是说啊, 他是一个先按下再弹起啊,他把这两个代码合并成了一个啊, k plus, 它是这个意思,我们可以看一看啊,我们这个代码它直线的效果是什么?它直线的效果,我们打开了一个文本啊,然后让它去输入, 我们按下 f 十,你看他刚刚输了一个 h, 对吧?但是很快就没有了,因为我的输入法没有调过来。那我们再来试试看啊。 啊?看见没有啊?我每按一次它就会输一个 h 啊, 那我们啊,如果想输一串呢?输入一串字母串的话,输入一串字母,比如说我们输入一个 hello, 那我们要怎么写?我们可不可以直接写?哈喽,这样写行不行?我们可以看看啊,这样写不行,你看我按一下 f 十启动键,他没有任何反应啊,他没有任何反应 啊,说明这样写不行,那我们要写啊,写这个效果出来。 hello, 我们要怎么写?好?我们只要把它拆分,拆分,我们这么写, h、 e、 l、 l、 o, 那看见没有,我们只能这么写啊, 或者我们把这个重复的字符啊,我们可以把这个次数调整一下,这也是一样的。我们再看看 啊,看见没有啊?也可以,因为这个次数啊,我们可以控制他的次数。那我们刚刚发现啊,这个大小写他是没有任何影响的,我们输入大写也好啊,输入小写也好,我们后面的这个 效果啊,并没有什么区别,它都是小写的,因为我们这个 kpras 啊,它是不会区分大小写的,都是一样的。那如果我想输入大写怎么办? 那我们就可以用到组合键啊,组合键,如果我们的输入法默认是小写的话,默认是小写的话,我们可以用 shift 加 h 输入大写,对吧? 那我们在这边就可以插入一个组合键,看见没有? shift 加 h 在左边这里,我们点插入, 你看我们的插入的函数,他是这样一块代码,先按一下十六啊一次,然后按一下七十二一次,这个是什么意思啊?为什么是十六和七十二?看不懂,对吧? 那这个数字啊,它其实是代表了我们的键盘的键盘码啊,什么意思啊?就是我们的键盘它上面每一个按键它都有一个对应的编号啊,它都有一个对应的编号,比如说十六,十六,对应的就是 shift。 啊,七十二呢啊,七十二,对呢?就是 h 啊,当时你说啊,这个,这个我怎么知道呢?啊,对吧?这些东西我上哪去查呢?我们可以去百度啊,我们可以去百度,因为这个是通用的啊,无论 你学任何编程语言啊,他的开发者一般来说都会有一个约定速成的一套东西。我们今天学习这个变量的时候,我们不是学过除了变量以外还有一个什么,还有一个叫常量,对吧?比如说拍, 因为他是一个不会去变化的数字,对不对派?那这些我们也可以把它当做我们编程语言里面的常量,就是我们的键盘码,他每个键盘码啊, 无论你学任何编程语言啊,他应该都是一样的啊,他应该都是通用的啊,如果每一套编程语言他的键盘码都还不一样的话,那我们学起来就很累了,还要重新去啊,看一下说明书,对不对?那我们怎么去查这个键盘码呢? 那既然是通用的,那我们就可以直接百度啊,比如说我们百度键盘码看见没有?我们直接搜键盘码, 然后后面有一个什么箭码, kiko 的对照表,我们看看它的键盘码,对照表我们可以搜索啊,直接搜索,比如说搜 h, 看见没有? h, h 多少? h 是七十二啊? h 是七十二,看见没有?我们是不是七十二,对不对?然后我们 so shift 啊,看见没有? shift 是几啊?是十六,看见没有,就这个意思啊,它每一个按键都有一个键码,这个是通用的啊,所以说它这里就是这个意思,它用键码代替掉我们的这个数字, 所以我们用组合键的操作逻辑就是我们先按下第一个键,然后不要松开,我们用 k plus 按第二个键, 然后再把第一个键松开,这样就可以形成一个组合键的效果啊。所以我们想把 h 大写的话,我们可以这样写啊, 啊,对吧对吧?大写是不是啊?不过我们实际上啊,在我们的实际编程里面啊,我们不会用这样的方法去啊,输入文本啊,除非有必要,除非有必要 我们先把它注视掉啊,注视掉,我们点这一块旁边的工具有个增加注视,它可以直接帮我们都注视掉。 那我们一般来说要输入文本的话会用什么函数啊?我们不会用这个 k plus 啊,我们会用 say string 啊, say string, say 嘛,就是讲话啊, string 就是 字不穿,那这句函数就是字面意思啊,字面意思就是啊,说一句话,那你想说什么呢?我们随便说什么都可以,比如说我们说 hello, 像这样我们使用程序啊,有问题,看见没有?他只输了一个 l o, 为什么会这样?为什么会这样呢?因为我们的脚本他的快捷键呢是 f 十, 然后 f 十这个快捷键呢,和我们的这个 wps, 他的软件快捷键有冲突啊,他们两个肯定共用了一个快捷键,所以说我们最好把这个快捷键改一改,比如说我们可以改为啊 shift 加 fe, 像这种快捷键就比较冷门啊,一般来说软件不会用这种快捷键。那我们可以再试试,看了看行不行啊?看见没有?没问题,对吧?

好啊,大家好,我是小乐啊,之前我们有说过啊,这个字库的一个用法,对吧?但是我们没有说怎么封装啊?今天我们来说一下啊,就是说我们使用字库的时候啊,首先啊,我们要先做一个字库啊,那做字库我们之前也讲过啊,这里我们再重新做一下吧,比如说我们做这个啊,文件浏览器,对吧? 哎,我们做文件浏览器,首先我们要把它给框起来,把这些字,对吧?框起来,然后我们再选择字的一个颜色,对吧?好,这个是纯白的一个白色啊,六 f, 然后因为这个字啊,他有啊,明的啊,有暗的,他这个啊颜色不纯,所以说我们也可以再加一个,比如说这个啊,偏暗一点的,再加一个,加到颜色二,对吧? 好的,那么这里有个制作智库啊,抓到里面,然后我们提取点赞,这里啊他有单个啊,有多个,多个的意思是说他把这些字啊全部分开,就是说啊,然后这边我们可以设置行间距, 夜间距,对吧?我们点点一下,以后呢,他这里啊,他就把每个字给分开了啊,看到没有?但是这个文件的键看到没有,他的偏旁和右边啊,完全的分开了,还有这个浏览器的,哎,浏览器也分开了, 这样呢,他就导致我们,哎每一个字分开不容易去做字库,所以说我们可以干什么啊?也可以就是提取点赞,提取单个,提起单个呢,他就是把,哎我们框几个,他就把这一个全部放到里面来,当做一个字,嗯,这是两种方式啊,但是我们把所有字都框进去了,他就不适合这样做了,对吧?所以说我们就一个字一个字框起来,然后这个这这个偏色呢,其实还可以再大一点 来,太小的话他这个字不清楚,我们可以用那个哎 qq 截图,然后来放大看一下他的字体,哎,够不够饱满,对吧?有没有缺东扫西的? 好的,那么我们现在就把它给分开,比如说我们前面,我们还不做,我们从这个纹开始,对吧?文件的纹啊,就做到这,然后我们制作字库这里啊,提取点赞,提取单个,对吧?他就单独一个字啊,他就出来了, 然后这个字呢? 嗯,比如说我们要放到桌面,这个叫什么呢?来测试吧。啊?测试测试智库, 好,打开,我们打开新建就新建,新建一个字库到桌面,或者打个选,选中一个字库,哎,然后接下来这个文字呢,字库呢?我们就做到这个啊,这我们新建的这个里面,对吧?或者我们以前做过的里面来往里面添加,那这个字就是文,对吧?点回车,他就自动添加进去了,或者点击这里按回车,或者点击这里,然后这个是一个字,然后我们再加一个,再加一个文件的键,对吧? 那文件的键我们可以少选一点,就像他这个,哎,这里有多余的一块,对吧?我们可以往左一点啊,我们不要那多余的一块,对吧?我们少一点也可以,然后哎选中这边往这边拉,来到这里,哎上下因为他没有没有杂色,所以说我们可以稍微大一点,无所谓,那我们这边也是提取单个,对吧?然后这是文件的键, 我们提取的单个,他像这种不连接在一起的地方,哎,就给他组合成一个字了啊,那就做,就做两个做,呃呃,做个例子就行了啊。然后做好了以后,我们附件里面就可以添加我们刚刚做的智库,比如说测试 智库,打开,哎,添加到我们的附件里面,然后我们使用的话是怎么弄?哎?设置文件之库对吧?设置连号之库,他的名字叫什么?附件里面他的名字叫测试 智库,我们看一下对不对啊?测试智库对吧?测试智库啊,名字是一样的,然后后缀都是啊,文本形式的,然后接下去还有一个使用智库啊,这个使用几号啊?零号,我们前面设置的是零号智库,这我们使用也是零号智库啊,一般的话,如果我们只有一个智库,我们就这样用,对吧?如果有智库很多的,你想切换智库,那么就把这一行代码放到你想切换的地方,然后改一下序号啊,就可以了。 然后接下来我们可以对字库进行两种操作,一种是区域找字啊,一种是文字识别,文字识别就是固定区域,我们先讲这一个啊,嗯,在指定范围内符合指定 相似度的啊,颜色偏一特征的支付串啊,其实讲的模棱两可。这个介绍啊,那么实际用法呢?那我们就是一行代码有 ocr, 然后加上什么范围,还有颜色,还有我们的相似度啊,我们只有几个参数,四五六六个参数, 六参数,我们可以对他进行一个封装,比如说这个叫智库相关的,他叫什么?叫十字,哎,十字的话他的范围是固定的,那就是 x 一,万一 x 二, 哇,这是范围参数哎,我们随便起名字啊,都可以,还有一个颜色,对吧?颜色完了还有相似度, ok, 这是他的参数,然后我们把这个东西啊放进来,那么我们想一下,我们要接收他的一个返回值,对吧?所以说我们定一个返回值,让返回值接收他的识别的内容,对吧?然后识别到了具体的东西呢? 然后把参数放进来,他就是按这些参数来进行识别的,哎,我们直接传进来就好了,然后我们对返回值进行判断,哎,如果他返回值等于什么?等于空, 制服串的一个空,他就是什么没有识别,结果返回这是制服串,看到没有返回识别到的制服串失败啊,失败的话他就返回空,哎,这个空呢?那是制服串的一个空啊, 没识别到啊。反,然后我们就函数,他都是有返回值的啊,我们返回值字库十字等于什么?等于假,那就是没有识别到,哎,否则呢?哎,就等于真,对吧?等于真的话,我们不不需要直接让他等于真啊,我们让他有东西,哎,就有东西,他就是真,让他等什么?返回直,就我们识别到的一个啊,字符上, 哎,封装就是这么简单啊,几行代码就搞定了,然后我们调用的话啊,就是把这些复制过来,然后干嘛把参数填进去?比如说我们 给他一个假的范围,对吧?没有东西一个范围,然后颜色,颜色就我们刚刚做字库的一个颜色,哎,这个一定不能搞错,相似度呢,那就零点九好了,我们输出一下他的返回值啊,看一下第八行,看到没有,他的返回值是假,说明 如果识别不到他这个反位置,返回的是什么字符串的一个空,对吧?他不是那个路那个空啊。好的,那么我们现在知道啊,我们现在封装的没有问题,那么我们就哎直接在这里给他空选一个范围,然后让他识别 好,改成正确的范围,我们识别出来看看是什么,识别出来是文件,对吧?因为我们只做了两个字,只做了文件这两个字,所以说它识别出来就只有文件,哎,这个是我们识字啊,文字识别的一个封装,那么还有一个是区域找字啊,区域找字怎么封装啊?就是给他一个范围让他找返回,什么返回找到了一个坐标 啊?那么我们先点双击一下啊,我们看一下他的,他的就是一个是查找一个范围,但是不建议全屏找啊,全屏找很慢的啊,我们找字呢,他是他是在这种找图找图找色里面啊,相对来说是最慢的一个啊,然后他找这里是找了一个字,哎,找哪些字,对吧?可以是单个啊, 哎,就是根据你做字库命名的,比如说你在这里文字定义你定义了很长很长,对吧?那那你找的话也是要找这个很长很长的这个字,哎,像我们就做了一 一个字一个字分开的,那么比如说我们找到文件的文,对不对?然后这里是颜色啊,相似度 好了啊,我们继续说一下啊,啊?这个是颜色啊,相似度,然后他有返回直,哎,反回直就是找到这个字的啊,一个坐标,那么我们封装啊,是怎么封装啊?我们来封装一下啊,这个是智库相关的是什么?哎?枣子,枣和石啊他是不一样的啊他肯定是不一样的。枣的话啊他的缺点就是哎速度慢。 十字呢他就是固定范围识别有哪些字,哎这个速度还是很快的啊。看自己需求啊。那么其实他这也差不多啊前面都一样 哎范围范围颜色相似度那颜色前面还多了一个啊要找的痣对吧找哪些痣? ok 然后我们把参数复制粘定啊我差点把返回之啊 参数复制粘贴过来啊然后这个呢就是我们一个枣子他是支持多个制服串的一个组合啊对吧如果比如说你好我好什么什么的,哎他支持找多个字 啊比如说我们做的是一个纹还可以加个竖杠啊箭对吧。哎搞错了啊就在这里在这里加一个箭 这个锁影值呢其实是啊返回什么返回找到的那个字的序号啊一般的话是用不到的一般用不到啊看你自己需求吧 一般情况下我们就是找到那个啊就可以了然后我们进行一个判断这里呢我一般都是喜欢用 x 和 y 的。好那么我们定一下 x 和 y 对吧他是不区分大小写的。我这个强迫症啊换回来吧。好我们判断如果 x 干什么大于负一那么就代表他找到了对吧。 所以说找到了我们就干什么 让他等一针,哎如果没找到呢那就让他等于假 好找到等于针然后我们还可以加一个东西对吧?哎是否点击加个点击这个参数哎如果我们判断一下啊如果点击等于一我们就点击对吧哎直接点什么 x 和 y 哎如果还有其他需求比如说偏移点击呢啊你可以再分装一个啊,然后这里加上偏移啊,这里加上偏移偏移,挨个的偏移外偏移啊,偏移多少?哎,看自己需求吧,对吧。啊基本上就是这样啊,然后我们进行一个吊用啊 啊不用返回这也行?我们直接输出啊直接输出,那么我们把这个也复制过 来, 这里颜色前面应该有我们要找的一个啊字找文件对吧?找文和件,那么我先我们先找一个啊先找一个这里我们让他输出一下,找到了我们让他输出一下,找到了坐标来方便我们查看啊, 来我们试一下啊,调试他都不匹配哪里不匹配啊?哦我们少了一个点击啊,要不要点击对吧?要不要点啊?不点。好,我们来调试。哎这颜色相似度点击对的呀, 都取关了啊。 哦那我的问题啊,我没有改啊,哎我们调用这个函数啊,函数名没有打上去啊,我还是用了原来的命 好了啊这里我们来再来试一下啊,哎他找到了,对吧?在幺九九七零幺找到了反馈就是真啊幺九九七零幺,我们看一下抓抓幺九九七零幺,哎是这里他是找到这个文字的左上角的一个坐标,其实那个文字呢就相当于一个图片啊, 对吧?我们来看一下他这个左上角是黑色的啊,所以说我们这边所以说我们这边他也是在这里幺九九七零幺这里 这个就是我们找到的一个坐标,那么如果我们换一个字啊啊文字幺九九七零幺那个键呢?我们来看一下啊,他也找到了,在什么二幺六七零零对吧? 二幺六七零零啊,这里对吧?他也是一个左上角的一个坐标。好的,因为我们这个范围给他给的很很小很小,然后我们给他大一点的范围,比如说啊我们这样对吧? 选这么大一个范围,我们在这个范围内里面再找,那他是不是啊还能找到呢?我们调试那他也是可以的啊,就是感觉啊有点慢啊,范围大了他有点慢 哎,我们找多个字就用这个竖杠隔开,比如说比如说他有时候一个字他不清楚,我们又添加了一个字啊,但是我们又添加了一个字呢?他他这个如果两个字都是一样啊,我们添加的还还是按这个来。那就不用隔开了啊,除非是比如说你,你找一些小动物啊,比如说牛羊马这种,哎你可以就是你找到哪一个都行,你就用这个竖杠隔开啊,就隔开两个字 啊,这个就是我们一个哎识字和找字的一个封装方法,当然了这种封装方法是最简单的一个也可以干什么也可以把它做成。就是我们之前有讲过一个就是哎放到我们数竹里面啊,但是具具体哪个方便啊,哪个好用来完全看你自己啊,怎么使用了啊? 如果你觉得这种方式方便呢?你就用这种方式啊,如果你觉得就是在前面定义一个数组,比如说呃字哪个字啊?这个是文件的文对吧?哎呀,也也不对啊, 来文件来等于来我们要找的找到这一串哎,放到这个数轴里面去,对吧?也可以利用这种方式啊 啊?然后具体这种方式怎么封装我就不说了啊,因为都是差不多,对吧?你看我们找字识字跟那个找图找色啊有什么区别呢?还都是把参数一个一个一个的啊?对应,然后给他放到我们封装的前面啊,然后里面加判断啊什么的,没什么区别啊。好了,这节课我们就说到这里啊。

点击抓抓,点击文档,按 ctrl, 加 alt, 加 e, 完成后关闭抓抓工具,然后找到鼠标命令,找到鼠标移动点插入, 在其他命令中插入延迟,在鼠标命令中插入左键,单击 加入无线循环代码,在其他命运中输入文字,输完完成。点插入,插入延迟,找到键盘命令,按下回车点插入,调试一下看看效果吧。 是不是很好玩呢?通过这个可以举一反三哦,点击发布就可以生成软件了。

好,我们今天来看这个朋友啊,他提了一个问题,他说他想实现一个功能啊,比如说啊,他指定 啊,在平均值生成 n 个数啊,比如说十到三十之间生成十个手机数, 并且这十个水基数的啊,平均值是二十,好,他这个需求呢,那我们就有那三个概念呢? 这句话啊,看起来很简单,对吧?看起来很简单啊,但是我们要把三个概念首先弄清楚,一个是随机数啊,一个是平均数,还有一个是什么? 还有一个是余数啊,虽然我们在这上面看不到,但是我们待会写脚本的时候啊,那我们会用到余数这个概念啊,余数。好,我们先来看这三个概念啊,这三个概念, 第一个随机数啊,这个很好理解,对吧?这个很好理解,比如说太阳升成什么十到三十这个区间,这个区间的随机数, 那这个很容易啊,我们之前就讲过啊,按揭机灵自带就有一个范例,我们就可以直接抄啊,这个很容易,然后平均数啊,比如说啊,他想生成 这个手机数啊,它的平均值是二十啊,是二十,那平均数是什么意思啊?比如说我们两个数字啊,啊,比如说 我们两个数字,那 x, 那加上 y, 如果说他们的平均数是二十,那我们就应该怎么算?那应该把他们括起来,然后除以二 啊,等于二十啊,对不对?这,这是两个数球平均数啊,对吧?如果是三个数的, 就是 x 加 y, 加上 z, 对吧?然后除以三啊,等于二十, 好,这个就是我们的平均数啊,平均数后面还有概念,是余数啊,是余数。那什么是余数啊?什么是余数?比如说我们用五除以三, 他不能整除,对不对啊?如果是六除以三就能整除啊?五除以三,他整除不了,对吧?五除以三,他整除不了。所以说我们的啊, 五五除以三,它无法整除的话,它的余数就等于几啊?它的余数等于二,那它的余数等于二, 那六除以三呢啊,六除以三可以整除,对不对?所以它的余数是零啊? 一除以二呢啊?一除以二,余数是几啊?啊?余数是一啊,余数是一,然后我们的啊二除以二呢啊,余数是什么?余数也是零啊,能不能理解啊? 这个可以理解吧,余数不能理解的话,去啊去百度搜一下什么是余数。好,我们再来看这个问题啊。首先要说明一下啊,我们要实现这个目的啊,他的方法啊,肯定不是唯一的啊肯定不是唯一的, 不过我在这里说了这个方法了啊,你们比较好理解啊,浅显易懂。所以说我们就啊用我的这个思路啊,来实现这个目的啊,不过你有更好的思路啊,就按你的思路来。好吧,我这个是比较笨的方法啊我这个是比较笨的方法, 好笨。但是呢啊,理解起来比较容易啊理解起来比较容易。那我们先要干嘛那我们先要干嘛?我们先要啊,搞定这个平均数啊,我们先要搞定这个平均数,因为他的要求是 它的平均值。是啊,比如说十到三十之间生成十个数据数,对吧?但这十个数据数,它的平均值是二十,所以说我们先要搞定这个平均值。 那如果这个方程式里面啊,我们有两个或两个以上的未知数的话,我们去求解,他是没有一个唯一解的,对不对?那我们先把一个数定下来啊,比如这个方程啊, x 加 y 除以二点二十, 我们首先起码要知道一个元素的值, x 或者 y 啊,我们只有知道里面某一个数的值, 我们才可以确定另外一个数的值,对不对啊?所以说呢,我们可以先先生成一个水积数,比如说我们先生成一个什么,先生生成一个十啊,假如说我们先生成一个水积数十, 那为了保证他的平均数是二十啊,那我们的另外一个字呢,就必须借助这个公式啊,把它给算出来啊,能不能理解?就比如说我们第一个数生成十,对不对?生成十, 那我们第二个数呢啊?第二个数我们就可以用 x 等于什么? 我们看下上面啊,看上面这个方程式, x 等于二十乘以二, 对不对?然后减去 y, y 就是十啊, y 就是十,也就是说如果我们第一个数水结数生成的是十,那么我们第二个水结数呢? 我们就可以通过这个公式啊,通过这个公式来把它算出来啊,能不能理解? 好,我们一步步来啊,我们先看找本怎么写,我们先看如何实现第一步啊,我们先声明一个函数啊,在指定啊,平均值, 换个名字吧,生成指定平均值的随机数, 我们这么写啊,我们这么写。好,那我们要生成这个手机数啊,我们这个函数啊,我们先想一下, 我们需要跟他指定几个参数啊,首先来说的话,我们需要跟他指定第一个参数,就是 需要生成的啊,随机数个数,对吧?我们要生成几个随机数,对不对?这个是我们需要啊,给他负责第一个参数啊,他的第一个参数需要生成几个随机数个数。 好,我们在这里给他传一个。什么?随便给他传一个啊吧,代表我们需要生成两个所结数,因为只有两个所结数啊,他才有平均值,对吧?如果小于啊,那我们只给他一个数, 那一个数还有没有平均值啊?一个数没有,对不对?所以我们第一行代码就可以。那,那这个函数里面的第一行代码我们就可以这么写了, 如果这个数啊,它小于二,那我们就可以提示一下啊, 随机数啊,太少了,无法产生啊,平均数啊,对吧?我只给他传一个参数啊,我们只生成一个啊,随机数的话,他是没有平均值的,对不对啊?他没有平均值, 所以说我们就必须需要给他传两个啊,或者两个以上这个数字才有意义,对吧? 这是我们的这个函数,它第一块大码。好,那么我们如何生成我们的水解数啊?我们如何生成水解数?在我们的这个全部命令里面啊,有一个 r、 n、 d 的命令啊,它这个 命令就是用来生成我们的水晶素的啊,我们可以看下面呢,它的官方就有一个很好的范例啊,这个范例写的很好啊, 你看 upper 啊, lower, 这个什么意思啊? upper bond 跟 low bond 代表这个水晶数它的上限和它的下限。如果我们这里写三十啊,这里写十, 那他就可以生成一个啊,十到三十的这个范围之间的手机数,他是这么个意思, 他是这么个意思。好,那我们要在生成这个水技术之前呢,给他重新重置一下我们的水技术,生成种子啊,这个种子我们需要 好重新给他生成一下,就啊用这个函数就可以了啊,好,那这里我们就可以啊,为我们的函数写后面的参数了,这里我们需要第二个参数。是什么啊? 生成随机数的个数,还有一个是什么?还有一个就是我们的随机数,上限上限值。 好,我们的随机数啊,下限制 好,上限值是我们的这个三十,对吧?我们把它剔过来啊,下限值呢?啊,是我们的十, 是我们的事,我们这样去改一改好,就可以去生成一个我们指定范围的随机数啊,生成随机数啊,个数前面已经有了,个数前面已经有了,就是二, 后面重复了,没有必要啊。然后我们的上线是几啊?上线,是啊,上线是三十,我们的下线呢?啊是十啊,下线是十,那我们这里水因数需要生成几个,那我们这里就要用复循环, 把这个代码呀,把它执行几次,对吧?这个循环次数就等于我们指定的次数啊,这个循环次数等于我们这个啊,这个参数的次数。好,然后我们把这个 生成的数值啊, 让他去等于这个数字啊,让他等于这个啊,这个公式啊, 好,我们先来调试一下啊,我们先来调试一下,我们看现在能不能生成两个水解数啊?看能不能生成两个水解数。 好,第一个二十一,对吧?啊?第二个二十七啊, 好,那现在我们就可以按照我们的想法生成我们指定数量的水积数啊,我们写二他就会生成两个啊,写三就是三个,并且范围呢,是在我们的指定范围内,对不对啊?三十啊,十,对吧?啊?在我们指定范围内, 好,然后我们在这里啊,需要生命一个数组啊,这个数组它是用来把我们的这个生成的数值啊,把它给装进去啊,生命数组啊,叫 result 吧, 加了数就是结果啊,结果数数就是我们的,最后它是用来装载我们的这个生成结果的啊,然后它的这个元素数量啊,就等于我们的 这个生成的这个水数的个数,对吧?我们这个数的长度等于他的个数啊,但是我们的后面这个参数啊,他是我们的最大下标值啊,我们最大下标值比我们的元素的啊,比我们的元素数量啊, 也就是说比我们的竖的长度呢,他还要大一,对吧?他要大一位大一,所以说我们需要减去 去一,这样才等于我们啊,数组的实际长度啊,我们数组只需要两个啊,我们只需要两个元素的话,那这里二减一,他的最大下标指是一啊,这样才对啊,能不能明白?好,然后我们在这里要这样写啊, for i 等于零 two 啊,我们的 i 是从零开始计数的啊,我们从零开始计数,然后我们在后面呢, 就需要给他写个括号啊,让他减去一,从零到一,我们的复循环才是循环两次啊,如果是从零到二的话,我们的复循环会循环啊,会循环三次,能不能理解?好,我们来调试看看, 他应该还是会弹两次啊,弹两次这个数字啊,第一是二十三啊,第二是二十,对吧? 如果你不写这个简易,那我们就会弹三次啊,好,那我们弹两次,我们的 i 是从零开始的,零是我们的下标,对吧?是我们的数组下标,他是从零开始数的,我们的数组他是从零开始数,零一二零一二,所以我们的数字第零位 是我们的第一位,那我们可以这样啊,数组 i 等于什么?等于生成的数值,这样我们就把我们的数值啊,把生成的数值就给他啊, 传到了我们的这个数组里面去,我们在后面呢,就可以把我们的数组的内容啊弹出来看看啊,比如说这样我们现在就有两个数值,对吧?数组里面一个是零啊, 那一个是一,它和我们这里生成的数字呢,那是一样的啊,我们可以看看啊,二十九,二十五,那后面还会再弹一次二十九和二十五,那二十九,那二十五,那能不能明白啊? 好,那我们来看这个问题啊,我们到现在还没有用到余数啊,那么我们的余数有什么用呢?我们的余数有什么用啊?我们来看这个公式啊,这个公式, 那我们这个余数呢?它是用来在我们生成了一个随机数以后啊,那用来计算另外一个随机数的啊,能不能明白?如果你需要保, 保证他们的平均数为二十,那么你就不能所有的数字啊,都去随机生成啊,这样是没法保证的啊,比如说我们要生成两个随机数啊,那我们生成第一个随机数之后呢?我们第二个随机数啊,我们就需要用公式啊,把它给算出来啊,这样才能够保证他的平均数为二十。 能不能理解?那我们怎么样判断第一个数和第二个数啊?我们就可以用余数来判断啊,我们可以用余数来判断。怎么写呢?啊?在这里啊,啊,我们用 i, 好,这里,我们用 i 去和我们的这个 are 来求余啊,用 i 和这个 are 来求余啊。如果这个余数那等于零。 零啊,我们就生成一个水积数,如果等于一了,那就不生成水积数。能不能理解?能不能理解?因为我们 i 是递增的,对不对?我们 i 是从零开始的。零啊,一 二零和二求余数啊,零和二求余数是等于零的啊,零和二求余数是等于零。一和二求余数呢?啊?等于一, 二和二求余数了,他又等于零,也就是说啊,我们的 i 和二求余数他只有两个,那他只有两个值,只为剩下两个值,要么是零啊,要么是一,所以说我们可以控制他。那写个条件语句啊,如果, 如果 i 和 r 求余数等于零,那么我们就生成一个 水激素, 那如果我们的 i 和 r 求余数啊,不等于零啊,就是 als 啊,不等于零,那这个时候我们怎么办?我们就利用公式啊,把它给算出来,看见没有这个公式啊, 好,我们先把上面的这个删掉啊,这个五官单把删掉啊,然后这个公式我们要怎么去理解啊?他是怎么算的?他是用我们的平均数啊,用我们的平均数乘以二,然后去减去一个, 减去一个十,这个十是什么值啊?这个十不是我们的下线值啊,这个十是我们的啊,之前生成的第一个数啊,第一个数他是我们第一个数的值, 所以我们在这里呢,可以给我们的这个函数啊,加第四个参数了,这是我们的平均值, 平均值,这里面平均值是乘以二平均值, 平均是多少啊?是二十,对不对啊?然后乘以二减去什么?这个十就是我们之前生成的这个啊,这个数值,我们要把这个数值啊,把它给减一下啊,把它给减一下。那怎么写? 怎么写?直接用这个去写啊,减去我们的这个数组 i 减去一,像这样写就可以了。那这个时候呢,我们把这个 x 改为这个 temper, temper 生成数值等于平均值乘以二减去我们 这个数组,上一位啊,上一位数字啊,上一位数字 i 减一。好,我们来看效果啊,看他是不是可以生成我们的啊?这个指定的两个手机数啊,那我们调试看看啊,启动 好,第一个数字几啊?是十七,对吧?好,我们写,我们记一个啊,十七, 第一个数是十七,好,第二个是几啊?是二十三,我们加一下,二十三啊,等于几啊?等于四十,对吧?它的平均值啊,它的平均值就是二十,对不对?对不对啊?二十是我们的平均值啊,下线值是十,上线值是三十, 好,然后呢啊,我们的手机数个数啊,那是两个,对不对?和我们的这个函数他是吻合的,对不对?好,那我们可以再改一改啊,改为四十 啊,改为五,看这样行不行啊?改个上下值,有没有问题啊?好,二四,那第一个字是二四 啊,四啊,第二个是十六,对不对啊?还是四十啊, 没有问题,对吧?没有问题。好,那么如果他是二是没有问题啊,那他是二没有问题,我改为四有没有问题啊?改为四有没有问题?我们来看看啊。启动 好,第一个是十三对吧?啊?十三加上啊二七啊三十三啊啊七对不对?四个数啊,是八十 啊,除以四就是什么二十,说明这个没有问题,对吧?不管我们改为二也好啊四也好,或者是六啊八也好,只要我们是二的倍数啊,那这个逻辑呢? 都是没有问题的啊,十一二十九,你看二七十三,你可以心算一下他两个数,两个数一组啊,肯定是啊,肯定是四十,加起来肯定是四十。好,那么问题来了啊,如果是基数怎么办啊?对吧?如果他不是偶数,他是基数啊,比如说我们剩下三个, 那这第三个数字我们要怎么给他处理啊?那很简单,我们直接让第三个数字等于几啊?等于我们的平均值就可以了啊,能不能理解啊?我们直接让我们的第三个数字等于我们的平均值,这里我们就不用 match 的 box 了,我们直接确实啊,然后我们的 的 i 这里吧,需要深层的水技术。个数啊, 如果啊,我们这个个数啊,它等于基数,怎么判断? g o 啊?还是一样求余啊,求余和二求余, 如果可以跟二整除,肯定是偶数对不对?那如果不能,那等于一的话,说明还有余数,那他肯定就是什么,肯定是基数, 基数偶数,那基数的情况下,我们就需要怎么样?我们就需要把我们的这个数组啊,最后再给他负一个值,把它最后一位元数啊,给他负一个 我们数组它的最大下标值啊,它的最大下标值可以用我们的 onboard 啊, ubond 可以用这个函数来直接把它引出来啊, ubond, 然后加上我们的数组, 他就等于我们的数组下标值,也就是我们数组最后一个元素,能不能理解?他就是我们数组最后一个元素,我们直接把我们数组最后一个元素让他怎么样?让他等于我们的平均值, 那这样呢?那就可以了,那这样就可以了,那我们可以到最后啊,有一个负循环,把我们的整个数组啊,把它输出一下,这样看起来比较清楚啊。 two, 我们试一下啊。 好,我们调试。好,我们调试之前呢,我们调试之前把这个下面的确实 printer 把它给作死掉吧,免得给我们啊混淆视听啊,你调试制作内容太多了,那你就不知道看什么了, 我们最后需要的结果是这个数组,对吧?那别的的信息我们不需要看了啊。好,我们来调试看看啊,三个数据啊,他的平均值是不是二十? 哎,你看三十,九,一啊,二十,那肯定是没问题,对吧?三个数字啊,三十,九,一,二十,他的平均是肯定是吗?肯定是二十,那我们都改大一点的,改为七啊,这个数字有点多,对吧? 看人多。那你可以大致看一下啊,二十一,十九啊,四十,对吧?十八,二十二,四十,十一,二十九,四十就二十啊,没有问题,对吧?能不能理解啊?他的这个逻辑其实很简单啊,他就是用一个数据啊, 用一个水基数啊,去计算另外一个数字啊,另外一个数字就不是水基数了,我们两两一组进行一个计算,如果最后一个有落单的啊,他是一个基数的话,那如果落单了,我们直接让最后一个数据等于我们的平均值啊,就这样就可以了,这样就可以了,能不能理解啊?

大家好,我是多多,欢迎大家观看我按键精灵电脑端番外篇, 这个导入导出原码,这个导入导出原码怎么呃实现呢?咱们点击一下这个新建脚本文件夹,然后把它改一个名字啊,嗯,随便改一个名字, 然后呢呃,他就呃生成了一个文件夹,这个文件夹呢 啊,咱们把这个原码给他粘贴进去,就是拖拽进去,把原码给他拖拽进去,大家注意一下这个细节,就是这个原码呢,他一定是点抠文件啊,这个是电脑端的点抠文件,咱们直接 拖拖拽啊,然后点击下一页完成,然后这时候呢大家就看到这个源码进来了,然后咱们双击一下, 点击原文件,这个呢就是导入原码,然后导出原码呢啊,咱们可以点击发布这个小箭头,点击导出脚本。导出脚本之前呢,咱们先调试一下, 大家看一下这个不通过对不对?咱们给他注视一下,这个可以通过对不对?然后咱们点击一下导出脚本,这时候才能才能导出,如果说你这个连编译都编译不了的话,他是导 出不了的啊,大家看一下导出不了, 然后咱们给他起个名字, 这个名字呢咱们还是 然后保存一下,点击确定,大家看一下这个是导出的这个脚本 啊,如果大家想学习按键精灵和了解按键精灵的,都可以加我的 qq 群和我的 qq 号啊,这节课呢咱们就到这了。

好,我们这一期来讲如何读写我们的 excel 文件呢?那 excel 呢?它是我们常用的表格文件,我们一般要做表的话都会用这个去做, 那我们怎么去读写我们的 excel 文件呢?那首先我们肯定还是需要一个路径,对吧? 因为我们要文件嘛,还是一样啊,我们来右键我们的表格文件,然后点属性,然后把我们的位置给复制一下, 然后呢加上我们的文件名,加上我们的后缀名, 好像这样呢,我们就有了我们的文件路径。那我们上次读取文本啊,读取句式本用的是 fail 插件,那我们这一次呢,读取我们的 excel 文件呢?我们应该用什么插件呢?我们要用 wordfish 插件, 因为最早的时候我们的表格啊,它就是 office 软件,现在一般都用 wps 了,因为 wps 确实比较好用, 不过都啊,不过都一样,我们程序都是一样的,读这个没有关系。好,你看他这里面有很多函数啊,啊,其实也不多,只有四个,一个打开,一个读取啊,一个写入,一个关闭, 那这个就基本上是我们的一个操作流程了,我们要先打开啊,对吧?然后你需要读就读,你需要写就写啊,最后呢,最后我们把关掉好了,我们点插入啊, 那我们就养成一个习惯,既然前面要打开,那我们后面呢,就记得把它关闭掉,对吧?有开有关嘛?你程序跑了之后,如果前面把它打开了,那后面好,我们就记得把它关掉, 这样呢,我们就可以通过它来打开和关闭一个 excel 文件。不过这里说的打开啊,不是指我们常规的这样打开它,它这里说的打开指的是程序内部啊,我们的这个程序 在它的内部啊,在它的内部去打开这个文件,你是看不到这个打开过程的,好吧,并不是,并不是说我们啊运行账号代码,我们的这个文件呢,就会自己跳出来打开啊,那不是这样的,好吧, 好,我们现在看读啊,我们现在看读取, 我们还是把鼠标停到上面来,我们来看一下它的说明, 它这里说明是啊,读取 excel 文档单元格后面的参数。是啊,工作表页啊,然后行和列,它第一个是工作表页,后面一个是行, 在后面呢,是列。这三个参数是什么意思啊?我们来看我们的 excel 表格, 工作表页就是我们下面的小标签,看见没有?这个就是页面,这个是页面,比如说我们这边这个是第一个页面啊,第一个页面看见没有?这是第一个页面, 然后呢后面的行行就是在这,这是一行,对吧?一二三四旁边有小数字,看见没有?这个是行。那列了列就是纵向的啊,纵向的 a、 b、 c、 d, 这就是列, 你看他这里也是有返回值的,所以说我们可以把读到的内容啊,把它付给我, 我们的变量,那我们生命一个变量, 我们直接让他等于,然后呢我们给他参数,我们把参数也写一个变量名啊,比如说耶, 糖叶, 那我们默认呢,都给他写一,都让他等于一,默认是, 然后我们把这个三个变亮啊啊,都 写过来, 好,看见没有?我们这样呢,就可以读出我们这个表格的第一个这个里面的内容啊,我们来看一看啊,看看有没有问题。 好,刚才我运行的时候报错了, 他这里说明我们有啊,参数个数无效啊,看见没有?所以他后面我看了一下,这里不需要加参数啊,我习惯了啊,我以为要加参数。这里不需要啊,他直接关闭就是关闭了。好,我们再来看一看啊。 哎,看见没有?面向人群,我们来看我们的文件,对吧?我们第一个内容就是面向人群。 那假如我们需要逐行读取,我们可以怎么操作?我们可以写个循环 雪花里面写什么呢?啊?我们先判断一下啊,先判断一下如果 我们读到的内容不等于空啊,这个符号它是不等于号,我们之前好像没有讲这个,是吧?那我写个注释。好吧,这个符号代表代表不等于, 所以这句话的意思就是如果我们读到的内容啊,不等于空不等于空,那么我们就怎么样?我们就把它调试输出一下, 我们自己看一下就可以了。那我们调试输出一下,但是呢,我们这里的 行啊列啊,我们需要给他调整一下啊,给他调整一下, 我们让我们的行 进行一个递增, 然后让我们的读到的内容啊,判断一下如果它等于空的话会怎么样呢?我们来 ease 的这个循环就是退出循环。 好,这个代码的意思就是呢,我们让我们的行递增,我们先读这个啊,再往下读,一直往下读,如果我们读到空的话,如果我们读到空的话, 然后呢我们就退出循环。好, 我们来看看啊,看这个逻辑有没有问题, 哎,看见没有?没有问题,对吧?面向人群,外语,人类自然语言、计算机语言啊,与计算机沟通,他和我们的内容也没有啊,也没有区别,没有区别,对吧?就没有问题。 那如果我们需要读取我们的列了,对吧?那就如花炮制嘛,对吧?如花炮制,一壶如花瓢啊,这个也很简单,我们把这个循环把它给复制一下, 我们在这里把我们的列进行地震啊,这样就可以了,对吧?我们可以把这一块代码先给他注视掉, 我们如果读列的话,他就是这样面向人群,无边层接触,对吧?这后面几句话我们来看看, 哎,看见没有?面向人群啊,我变成基础基础较差的入门者都没有问题,对吧? 好,那读没有问题的话,我们看怎么去写,比如说我们要把我们某一行内容好,把写到我们的某个指令单元格, 我们要怎么去写呢?还是一样啊,看它的这个函数,我们把它给插入一下, 然后看说明它的参数跟我们的读的参数差不多啊,无非是多了一个写入内容,那我们就试试看吧。页行列,那我们就写一个, 比如说我们在第二条的啊,第二条的第三个格子在这里,我们试着输出一段话,好吧,写个 hello, 好吧, hello, what? 那我们的页叫还是一啊,行的话就是第二行了,我们的列就是一二三啊,第三列啊,一二三,我们来看看能不能去写入啊, 调试,然后启动。好,我们来看看啊,刚才我把它关掉了,因为我们的文字啊,他不会及时的写入进去,我们如果要看的话, 我们要看结果的话,我们要把它先给关掉,先给关掉,然后呢?再打开, 哎,看见没有他就有了,对吧? hello, world。

哈喽,大家好,本期的视频教程我们一起来学习我们下载到的脚本元代码如何导入到我们的脚本当中。首先呢,我们在桌面上启动我们的按键精灵脚本编辑器软件,启动完成后点击脚本 进入到这个界面之后我们点击桌面的原代码,点击文件,然后我们单击他,把他拖到我们的这个脚本的空白处这里, 然后这里会提示一个导入工具,向导正在导入,我们点击下一步点完成即可。那么接下来这个计算器已经被成功的导入我们的脚本,我们可以双击进去看一下我们的脚本, 这里就是这个计算器的代码了,然后我们点击保存即可。好了,本期的视频教程就到此结束了,我们下期再见。

好,我们今天来看这个朋友,他的一个留言啊,他跟我发了一个字不串啊,大写外,小写外,然后 j, 三五幺八,后面还有一个加号,还有个括号。 他说在调试信息的时候都能调试出来,可以用 for 循环把账号和密码都能够调试出来。但是在录入的时候呢, 前面会少录入两位,并且 y 会录成小写的 y, 后面加号录不出来啊。他问我这个要加什么函数啊? 这是一个那相对来说比较复杂的字,不串输出啊。如果我们可以直接用 c、 s、 g 的话 啊,那就比较简单了。但是他这里的应用场景啊,他是要填密码啊,密码区很多时候是不允许用 csg 的,所以我们要用 k plus 啊。把这个串拆分之后,进行一个单独的输出。 我们之前讲那个字母串拆分输出的时候也讲过,如何把一个字母串啊,把它转换成数数,然后一个一个拆分啊,拆分之后单独的用 kpi 输出,这个以前讲过啊。然后我们就要看, 在这种特殊情况下,他有大小写,又有加号,那还有这种括号,我们要怎么样处理才能把这个字不算拆分工作啊,把它做好啊。我们可以看一下啊,看原代码这一块代码呢,基本上就是以前我们的字不算拆分的时候,用了代 干嘛。它的功能很简单,就是把我们的一个字母串呢,那把它给拆开,我们可以跑下看看啊,你可以跑下看看,调试 好,启动好,我们可以看到啊,我们的程序执行完毕的时候,你看它呢,是不是算这个啊, y、 y、 j 对吧,我们上面把它这个是不算了,把它给啊,把它给先设置好了, 然后成语跑完,他会把这个字符串把它拆分出来,那大写 y, 小写 yj, 后面是数字三五幺八加括号。他每一个字符串都被我们成功的拆出来对不对? 然后我们直接你看,如果我们直接去用 csge 的话,它是可以把它切出来的,但是我们要用 k plus 单独把它打出来的话,就会有问题啊,就会有问题,我们可以看看会出什么问题啊。 我们的快键是 f 十哈,我按一下 f 十。好,你看他把我们的字幕算打出来了,但是他没有按要求打。 首先他没有外啊,他没有大写外,他外是小写。然后呢,他的加和括号他没有打出来对不对啊?看见没有? 哈喽,我也录了少两位啊,少录了两位,看见没有,少录了两位,对吧?然后 y 呢?没有大写,跟他的描述的问题是一样的对吧?少录两位啊, y 没有大写。那我们怎么去解决这个问题啊?好,看,我这一块注视啊,看我这一块注视。我写了啊, a s c 函数啊,这个函数它是可以干嘛?它是可以返回我们的 啊,返回我们按键的键码, 因为我们每个按键呢,它都是有个键码的。比如说我们在这里啊,你看组合键,这里看见没有,我们按一下 ctrl 加一啊,然后点插入,你看 他这里看局的十七对吧,依旧是四十九啊。我们每个按键都有个键码,包括我们 abcd 都是一样的啊, abcd 他都有个键码。然后同一个按键啊,同一个字母键,他的大小写键码是不一样的。你看 字母按键,小写是 a z, a 到 z 是九七,那到一百一十二啊。大写的呢? a 到 z 是六十五到九 九十。你看他的数字是有明显的划分的,明显的划分啊。大写的字母,他的数字键码是要小一点的,然后小写的呢,他是要大一点的。 能不能明白?所以我们可以通过这个箭码啊,来判断我们啊,要输入的这个字符啊,是大写还是小写啊?那比如说现在我们在这里啊,加一个输出条数据, 我们写一下啊,当前按键键码 好,我们来调试输出一下啊。啊,启动 好,你看当前按键键码哦,我没有加函数 好,再来一回啊,好,看见没有。当前按键键码下面都有对吧?八十九啊,一百二十一,一百零六五十一,五十三和四十九。好, 那既然我们可以得到件码,那我们就可以用来判断我们的这个字符啊,他是大写还是小写啊?写个衣服一句就可以了。这里我们可以判断一下啊,用衣服一句啊,如果 他大于啊六四,并且小于九十一,说明我们是什么?说明是大写啊。 那如果我们这个写详细一点吧, 如画大于九十六啊,并且小于一百一十三,那说明是什么?说明是小写啊。这里就 好。那大写的时候我们就要怎么样?我们就需要把它给处理一下啊。小写,直接直接直接 k plus 啊,然后大写呢,大写的话,我们要这里先你可以控制我们的这个键盘上的按 键啊,它不是有个大写键吗,对吧?啊,除此之外呢,你还可以直接加一个 shift 啊。 比如说我们后面的,你看如果我们要写个什么大写的 a, 我们是用 shift 加 a 对吧?我们把组合键啊插入一下看看啊,组合键 shift 加 a, 看见没有,是 k down 十六,然后 k plus a 啊,这个是 a, 所以我们在这里就直接把这个 kid down 啊, k up 啊,十六把它给写过来。 然后我们把这个 k price 就还是一样啊,把这一块直接给把它给覆盖掉就可以了啊。 然后呢,然后我们还要写个 s 啊,上面这个是大写的字母 对吧?这还是字母,下面这个是小写的字母。其他其他情况就是数字啊,还有标点符号啊,都可以用其他表示对吧?其他 那其他情况怎么办?其他情况就直接啊,还是一样直接 keep press 啊,直接 keep press。 但是啊,在其他里面我们还要做一下判断。 如果啊,他这里有加号和小括号啊,我们在这里就把加号和小括号做个判断。 如果你还有其他的其他的这个特殊符号的话,你也是一样的啊,单独在这里要把这个特殊符号把给列明一下啊。我们要把特殊符号单独列明。 这里我这里我写的稍微有点复杂,也许有更好的写法。不过我们先不要去纠结我们的代码它的优化问题啊,优化是最后的事情,我们先把功能去实现它啊。 我们在这里写一个 w 啊,写个 w, 如果我们的这个字符它是加号,那或者是括号,我们就要在这里面呢进行一下特殊处理,单独处理啊,如果不是特殊符号呢,我们就直接把它输出。 然后特殊符号里面呢,我们要对两个特殊符号啊,进行一个单独处理啊,进行一个分别处理加号和括号啊。加号的话是 这边 shift 啊, shift 加等于号,我们插入括号呢,括号就是 shift 啊, shift 加我们的零。 好,就像这样啊,我们要做三个大的判断啊。第一个判断是大写字母,我们需要转换一下,那用 shift 直接加这个字符,转转换成大写, 如果是小写的,那我们就直接输出,不用管。然后其他其他就是在特殊符号的时候,我们应该怎么处理啊?我们首先要把特殊符号把它罗列出来,如果是加号,那或者是括号, 如果你还有其他的特殊符号的话,你要把这个 or 进行一个拼接,看见没有,后面继续写。那边明白,我们这里只有两个的话,我就先只写两个啊,然后等于每一个特殊符号的时候呢,我们把它单独处理一下啊,这样我们再用 k plus 啊 去进行一个输出的话就应该可以了啊。好,我们这里调试看看啊,调试看看, 哎,看见没有,对吧,很丝滑。是不是我们成功了,把这个字母算了,进行一个输出。 好,我们来再看一下代码。我们上面先指定我们的目标怎么串啊,然后生成一个生命,一个数组啊,后面就是用一个 后循环,再加上我们的字符串。处理函数啊,把我们的字符串做一个拆分,这个拆分,然后用 asc 这个函数去判断我们的这个字符啊,他到底是大写字母呢,还是小写字母还是其他。 大写字母的话,我们需要加一个 shift, 加一个 shift 把它进行一个大写的输出。 小写字母我们就直接输出啊,直接输出 k plus 直接输出。其他情况的话,如果有特殊符号,如果是特殊符号加号或者是括号, 你还可以继续往后写啊,比如说你是左括号对吧?像这样,这个你可以自己去拓展。好吧,那我们就不全写了啊。 然后我们就做单独的处理啊。做单独的处理。如果啊,不是这些特殊符号,比如说是数字,那我们就直接怎么样?就直接还是一样啊。 k press 你也可以单独把数字啊罗列出一下啊,罗列出一一个分支来。因为数字肯定他也有他的箭码区域啊。零到九啊,零到九啊,肯定也有他的箭码区域。这个代码呢啊,你可以进行去拓展和修改。好吧,他的主要原理和逻辑啊啊,我已经讲的就很清楚了啊。

大家好,我是多多,欢迎大家观看我案件经营第八十四节,这节课呢,咱们讲一下日期时间函数,这个第一个功能呢是获得系统日期, 这个功能呢他返回的是当下的年月日, 这个功能干什么用呢?他一般是用来限制用户使用脚本的时间,这个算法呢在案件经营第六十八集网络时间这节课的时候咱们已经讲过了, 有的时候呢,咱们按键精灵的脚板是离线状态,获取不到网络,你就得用这个 获得系统日期来限制用户的使用脚本时间。这个功能呢啊,就是干这个用的,他可以在离线状态,但是呢系统日期是可以去手动更改的, 呃,所以这个功能也是比较积累的。 然后呢咱们讲一下获得系统日期和时间,咱们呢复制一下 搅本栗子, 大家看一下啊,这个呢是返回当下的时间,这个呢返回的是呃,返回的是今年啊, 然后呢这个是返回的是十七号,在这呢有两个,呃英文单词,第一个单词呢是星期几的意思,咱们呢我给大家,嗯,在百度看一下, 今天呢是星期四,所以返回的是这个啊, thu 啊, 第二个英文单词呢,这个是月份, 今天呢是十一月啊,然后呢他这是看一下啊,是十 一月。 这个获得系统日期和时间的也是可以用来限制用户的使用时间,但是呢,呃,他有一个另外的这么一个写法 啊,因为在有的游戏, 在有的游戏内呢,他,呃星期一,星期二,星期三,星期四啊,到周日的话啊,他们每每个星期啊,他执行的这个任务都是不一样的, 所以呢咱们需要用这个,呃,这个命令给他分割出这个星期几来。这个呢怎么写呢?我在这给大家敲一下。 这个呢是第一个数组元素, 然后呢给他搭配上这个命令 啊,星期一、二三四呢,我就不在这桥了啊,这个是有这么一个算法,就是说 啊,获得了当下的时间是星期几,然后判断他是星期几在执行星期几的这个任务啊。其他的呢,你可以写,就说一二星期一、星期二、星期三都可以在这个地方去写啊, 大家看一下,是有这么是有这么个斜法的, 这个是在游戏里面执行星期几的这么一个啊,星期几的这么一个任务, 然后呢在这有一个获得系统系 这个获得系统时间呢?他是什么意思呢?就是说获得一九七零年一月一日至今所经过的这个秒数, 嗯,大家看一下啊,这么多秒。这个呢啊,咱们可以写个写个,写个算数啊, 然后呢?呃,他是一九七零年,今年的话 是一几,今年的话是二零二二年,二零二二年减一九七零,他是五十 五十二年。然后呢咱们刚才不是有这么一个秒数呢,这个把这个秒数获取到呢啊,秒数一分钟呢,等于六十秒,我们让他除以六十, 然后呢一个小时呢?等于六十分钟,然后呢这时候呢?他是一九七零年,呃,到现在所 经过的这么一个分钟数。然后呢 这个是分钟除以六十啊,这个是分钟,这个是小时,这个是小时啊,这是一九七零年 到现在经过的小时啊,然后呢再除以二十四小时,因为一天是二十四小时啊,然后再让他除以三百六十五天 啊,这个呢就是从一九七零年到现在所经历过的年, 有的时候是闰年啊,闰年会多一天啊,或者说少一天, 大家看一下,正好五十五十二年,因为现在到年底了呢啊,他是点酒啊,这有一个酒 啊,他这个是获取系统时间啊,是这么个意思,这个代码他有什么用法呢啊?我给大家说一下,我一般是把它当做随机数用啊, 这个可能大家不知道。嗯,我一般用这个当随机数用的比较多一些, 在这个字符串格式里面呢,有一个取右边字符, 大家注意使用这个 n 的时候呢,给他系的转换成这个, 转化成这个整数啊, 他获取到这个秒数的最后一位呢啊,这个最后一位就会变成自负串,然后呢咱们转换一下,然后他就会变成数字格式, 大家看一下啊,这个二呢,他是随机的,看一下, 你其实可以把它当做随机数用啊。啊,这个随机数呢,再给他搭配上这个啊,第五十六集,这个随机不重复数字啊,就很强啊在 嗯,有的时候我写代码的时候会经常用到这么一个,呃,细节就是用这个, 也不说细节经常用到这么一个想法,就是啊,用这个系统时间,嗯,当做这个随机数 这么一个写法。这节课所有瞧过的这些案例呢啊,我建议下,建议大家多瞧瞧啊,其中这个获得系统日期和时间啊,大家看一下,这个的话,他 他是可以获得星期几和月份的 啊,有的时候我们会用到这个月份,有的时候我们会用到,这个是星期几啊?大家注意一下, 这个是挺有用的啊,这节课呢,咱们就到这了,大家有什么不会的啊?这是我的 qq 号,这是我的 qq 群,然后呢, 嗯,我再给大家说一下啊,因为最近很多人问我问题,然后, 嗯,他们就是好多我讲过的课呢,他们不敲啊,他们觉得我讲课特别简单,就是看一眼就会了,其实不是的啊,我的课呢是 是讲的比较简单,但是呢,他呃讲呃,他那个是在以后会要把以这些简单的这些 知识会经常会组合在一起,如果说你简单的不进行大量练习的话,后来啊,后面讲那些稍微复杂点的算法 是需要这些简单的进行组合在一起,你可能就会听不懂他们好多问的问题呢,我就会,我看了一眼,我就会告诉他,他这个地基姐,你是不是没敲哎, 嗯,我看他们好多人给我反应就是说,嗯,就是看一遍就过,所以大家看我教程的时候尽量是多敲敲 呃,毕竟这个就是一个熟手的活,特别简单,你敲的越多,然后呃手越熟练,然后 这个思考的这个逻辑就会越好,写写对应的这些脚本啊,这些算法的时候就会呃,就会越熟练。嗯,好了,这节课呢,我就不给大家多废话了 啊,大家就把我这个呃讲的这个课呢,大家就多瞧瞧。