好,我们现在看这个 tree 啊,我们上一个代码已经可以让它去识别我们的目标了啊,好,这里名字改一下,这个是输出的名字啊, 然后我让他帮我优化代码。这里啊,看我们的新需求,帮我优化代码,把我的快捷键改成组合键,并且合并功能,把一和 s 的 功能合并为二加二。 因为我们之前的启动很麻烦啊,我们要先按一,再按 h, 那 这里我们简单一点,直接一个组合键二加一搞定啊。 好,这里帮我改好了,并且程序已经启动了,我来按一下二加一试试看,那没有问题啊, h, 再按,并且我的这个鼠标也过去了。 好,现成停止也没有问题啊,那这个时候我们就可以点这个保留啊。好,我们之前在讲 python 的 时候 讲过这个如何利用一个透明窗体进行一个目标识别的标记啊,然后在我们的笔记里面有这个源码,可以下载这个, 我们把这个源码把它下载下来啊,叫 alpha window, 就是 透明窗体,我们把这个源码贴到我们的 tree 的 项目文件里面去, 我们可以看到这个项目文件夹,这里就多了一个 alpha window 啊,点 python, 隔三差五的就有小伙伴要我帮他去看源代码。 看源码这个活不是给人干的啊,是给 ai 干的啊,以后你们别让我看源代码,直接会给 ai 看,他会帮你看。好了, 那这里我们就可以利用 ai 来让他帮我去阅读这个源代码,并且把它利用起来。好,这里我来给他一个新的需求啊,我想在现成控制的代码中,利用 alpha window 生成一个一九二零乘以一零八零的透明窗体, 并且在该透明窗体中把检测的目标图像用红色的方框标记出来。那这里我害怕 ai 不 能够完全理解我的意思啊,我点一下这个优化输入内容啊, 好,我优化之后啊,我们可以看一下它的这个新的这个语言就非常的准确了,应该是没有问题的。好,那我们来启动。 好,他这里已经把这个代码给我们改完了,我们可以看一看有没有问题 哦,他这个把他把我的 tab 给它覆盖了啊,呵, 好,我们来启动啊, 哎,没有问题啊,没有问题,这个图框把它绘出来了啊,我们这里把这个键盘的按键和鼠标的这个点击把它给去掉啊,先把它去掉这个鼠标和键盘操作啊,因为 没有必要啊,因为我们已经确定他没有问题了,对吧?这是在我们找到目标之后啊,可以对他进行了一个操作逻辑的设计啊,如果你要对他进行操作的话,可以在这里写逻辑啊,那这里我们不需要对他进行一个确切的操作啊,所以我们可以先注册了啊。 好,我们来继续优化啊,我希望在会制的方框的上方啊,用文字显示我检测的目标的名称,帮我加上这个功能啊。 falling in love with her is that like you freak no, no, i think it's i think anybody falls in love is a freak it's a crazy thing to do。 好, 我们再来试试看啊,哎,看见没有,现在有名字叫对吧啊?目标,好,我们继续啊, 再帮我把显示的名称后面加上目标的坐标信息啊,我们要一点点往上它啊。 好,我们来测试啊。哎,目标啊,后面还有坐标信息,看见没有?非常完美啊。
粉丝2.6万获赞7.8万

在我之前的视频里面啊,我介绍了一款编程工具叫 tree, 在 这个视频里面,我演示了如何让 ai 帮我们去写一个多现成的范例,以及去写一个俄罗斯方块的小游戏。然后就有朋友问我了, 这个东西能不能利用它来写脚本呢?可以的,但是你要知道,我们用它来写脚本的话,其实本质上还是在用 python 去写啊, 因为 python 和 ai 的 兼容性比较好啊,我们可以让 ai 帮我们写很多 python 的 代码,通常来讲的话,这个错误率还是可以接受的啊,但是你需要掌握 python 的 一些语法基础和它的一个代码结构啊, 就是说你不能什么都不懂啊,完全指望 ai 帮你去写套复杂的脚本啊,那是不太现实的。所以,如果说你想要 希望利用 ai 来帮助你辅助写脚本的话,你至少得掌握 python 的 一些基础。而 python 的 学习门槛呢,实话实说啊,他肯定是要比按键精灵更高了。 所以说,如果你是一个零基础的小白啊,你想要写脚本,那么我建议你把按键精灵作为起点啊,还是去先看这个编程基础,先看这个, 然后你再去看这个,最后你再去尝试啊,让 ai 辅助里去写脚本,要不然的话,他写错了,你都不知道怎么改对不对?就算没错,你也不知道怎么去用啊。好,当你具备了一定的编码技术之后啊,你就需要具备一定的理论基础。 我们的主要脚本理论基础其实就是两个系统啊,一个是识别啊,一个是操作。 关于这两者的关系呢,你也可以去看一看我的这个视频啊。好了,我们再来说一下这个用 python 写脚本的好处啊,第一个我之前说过了,就是 ai 跟它的兼容性比较高。 第二个就是他不太会被针对性检测,他的安全系数啊,是要远远高于按键精灵的啊,而且他的封装性啊,代码的封装性也要远远好于按键精灵,所以他的整体上限也要远远高于按键精灵啊,但是他的部署和发布啊, 要比安吉基尼更复杂。那说了这么多废话,我们来看一下怎么去通过实力啊,来去写一个最基础的目标识别加点击啊。好了,接下来是使用拍摄啊,你需要先安装好我们的拍摄环境啊,自己去往上下一个。这里我的版本是三点一,四点二, 这是我的拍摄路径啊,我们需要在我们的这个开发环境里面把这个路径给指定一下啊,在我们的这个开发环境这里啊,拍摄就是起的, 你看啊,这个路径啊,你要去指示一下。好,这里还是先打开我们的之前的项目文件夹, hello, world, 然后我们来设置一下这里,把我们的编码的界面啊,把这个字体把它改一改,改的稍微大一点, 方便你们去看啊,要不然的话太小了看不清楚。好,我在这里向 ai 提下需求啊,在这个多线层代码内,帮我实现如下功能, 在一条线层中检测一张目标图片,在一条线层中判断是否检测到图片,如果检测到,那么则让鼠标移动过去,并且进行点击操作, 同时按一下键盘的 h。 后面是这个目标图片路径啊,就这个,就这个桌面,这个美女的嘴巴。 好,这里我们把这个名字改一下啊,排序他对中文的支持还是不太好啊,我用按键用习惯了写中文,我们把它改为这个英文啊, target。 好, 这里我们来启动一下啊, 然后这里有提示啊,它的快捷键比较简单粗暴啊,是 e 和 h, 那 我们就先按 e 再按 h 吧, 大家看见没有啊?我们的鼠标确实可以过去,看见没有,对吧?这个说明没问题啊,我们的键盘输出的话,这里看不出来啊,应该也是没问题的。 好,我刚才按 q 把这个停掉了啊,刚才鼠标不是我自己动的啊,千万不要以为是我自己动了啊,是这个程序动过去的,我们可以看下这个输出啊, 检测到目标图片这个位置,你看九四五啊,五三三。我们这里粗略量一下,九四五啊,五三三是不是,你看差不多啊,九四五三三的话 啊,你看九四五三三啊,他量这个图片的位置,你看他不是以这个左上角为基准啊,他是以这个中间点为基准啊,所以我们看他鼠标过去的点也是这个中间点啊。 好,那我们再来一起浏览一下这个源代码啊,我们看一下它这个原理是怎么实现的啊?我们看到这个 cvr 就 应该知道啊,它用的检测原理是用了 open cv 啊,然后这个是我们的图片路径啊。 好,这一块是他这个我们的工作线层,这个一代表一秒钟啊,他和我们的按键的这个计时不太一样啊,按键的话这个单位是毫秒,他这个是一秒钟,那我们这里可以把它改快一点啊,比如说零点零一秒啊, 好,这里是我们的图片检测这个线层 啊,这里是输出我们的这个图片位置的,你看这个算法,它就是按照我们的这个中间点去算的这个位置啊,啊,除以二,对吧?宽高除以二 center 嘛,你看啊,中心点啊,然后这个 w 就是 y s 宽啊, h 的 hit 啊,高, 后面这里就是我们的控制线层啊, 然后这个鼠标操作用的是这个啊,用的是这个第三方库 p y l to g o i 啊,然后用它去移动我们的鼠标,这个间隔是指的是我们鼠标从我们的这个当前位置啊移过去,它所需要花的这个时间,这个零点五就是零点五秒的啊,就这个意思。 但是这里显然这个 ai 啊,还是把我的一个意图给理解错了啊,就是我这个 h 啊,我的意思是让这个鼠标移过去之后啊,按一下我们的键盘 h, 对 吧?在这里去按一下我们的键盘 h, 我 这个意思啊,但是他理解我了。什么?他理解我了,我们这个 去用 h 去启动我们的县城,是吧?你看他这就是理解错了啊。那好,我们再把这个间隔把它改短一点,比如改为零点零零一秒啊,他就可以做到。什么呢?瞬间移过去啊,他就没有这个轨迹了。好,我们可以看一看啊,启动 我们按一下,一再按 h 啊,好,看见没有,对吧?我们鼠标闪过去了,看见没有啊,对吧?直接瞬移过去啊,它就没有这个过程了啊, 然后 h 它按下去了,你看见没有?我们的这个这个文件夹,你看 h, 你 看它会亮,对吧?它会闪一下,说明我们这个键盘 h 啊也被按下去了啊。 好,现在是我们去借助这个 ai 啊,去帮我们写脚本的一个基础的方法,如果你有兴趣的话可以去尝试一下啊。

今天教大家用拍摄实现大麦网自动抢票,同学们大家好,今天给大家带来一个拍摄爬虫用来抢演唱会门票的一个程序。好吧,那我们先来看一下,一般大家可能追星或者看演唱会啊,都需要先买票,对吧?然后用这个大麦网, 那这里面的话呢,我们先随便选一个,比如这个里边看啊,哦,验证,先验证一下,这干嘛?两个企鹅,这 好会出现这样的一些页面,对吧?你自己可以选一个。那我这里的话呢,这个程序我们就以来 以这个程序为例。 ok, 这里先说明这个程序需要在 python 环境下才能运行,如果你没有 python 环境是运行不了的。好吧,这个前提条件,行,那我们来看下这个程序啊,这个程序话我们先选择,第一个是有两个页面链接,第一个是登录链接啊,你需要登录账号才能买票是吧?要不然买不了。 还有的话就是你要抢票的那个网页啊,实际是什么网页?这个给大家看一下了,我就是刚刚直接用的这个页面,就这个网址,那这个我的弹幕里也是这个网址, 那就这个啊,这个月光下的翅,正翅,对吧?是一样的吧。 ok, 所以 的话呢,我就要用这个来作为一个测试啊,抢票。好吧,行,那接下来我们来看一下, 来点击运行走,首先第一步它会直接驱动这个界面啊,驱动浏览器进行打开,然后呢会进入这个登录状态,这里你需要登录啊,不登录用不了的。那这边我们扫一下码,第一 two, ok, 然后验证下你的账号,这边呢一般需要发个验证码,我们登录下账号, ok, 前期的话呢,需要登录,后面的话呢,它会一直循环往复的去点击抢票,所以的话你就只要挂着就行了。来,接下来我们输入,呃,验证码, 九六二五二,好,然后点确定, ok, 那 么他就直接打开页面,并且呢开始进行购票,然后就全自动了,好吧?最后呢这个点一下行了,自动提交 好,然后就进行支付页面了,就到这来了,好吧,剩下支付页面这个地方就就不行了啊,这个支付不了了,好吧,为什么?因为如果你这个支付也要让程序执行的话呢?到时候你这个, 呃,可能你卡里的钱不够他的扣啊,所以这个部分的话呢,就会留着你手动支付。票已经抢到了 啊,票已经抢到了,好吧,你只需要在你的这个大卖的 app 里边,然后呢你选择你的订单,然后去点支付就可以了,他已经处于待付款状态了,好吧,票已经拿到了,你只要待付款就行了,然后你到时候支付一下,那么这个票就到手了,好吧,好,谢谢大家,那这是我们今天这个程序, nice。

如果你曾经运行过一个执行时间较长的 python 脚本,与其干等着它结束,不如让它在完成时播放一段提示音。 首先,导入 windows 声音模块,这个库是 python 自带的,无需额外安装, 只需调用 winson 点 beat 方法就能让 python 播放声音。第一个参数是蜂鸣声的频率,第二个参数是蜂鸣持续的时间。 当我运行这段代码时,电脑就会发出一声提示音。关注我,获取更多拍伞实用技巧!

用拍摄爬虫来获取 vip 视频的,首先的话呢,这个程序它是这样的,点击鼠标右键运行,那么它会弹出一个这样的窗口页面,能看到吧, 然后呢这里面有几个选项,就是你看看你想要看哪个平台的视频,我们这里就假设以腾讯视频为例,点击腾讯视频,好,那么呢他会直接打开腾讯视频的官方网站,就这样一个页面。接下来下一步呢,我们选择,比如选个电影吧,电影 好,电影里面你可以自己随便选一部电影来进行播放,我们就以这个浪浪山小妖怪为例,好吧,点开它,嗯, 好,那么可以看到这边的话呢,就开始播放了,但是它只能试看五分钟, 对不对?好,那行,我们这边先暂停一下,先复制,然后呢把这个链接放到我们这个输入框里边啊,粘贴到这里,然后呢点击播放 vip 视频,好吧,点一下,他点一下,那么他就开始解析播放 啊,就开始解析播放。 ok, 之前我放过来给你们看一下,继续播放。开始啥意思?唐僧不是还在路上吗?咱们迎上去,先下手为强。 你开玩笑呢吧,我说真的,劫胡,嗯,你疯了吧,那大王不得弄死咱俩?现在大王不是也要弄死咱俩吗?搏一把,说不定咱们先长生不老。 所以如果你想去看这个视频,那么就可以通过这个程序来进行实现。好吧,根据你自己的情况来啊,想看什么视频你就自己放进去,把那个网址粘贴到这里,然后点击播放就好了。不过需要提示一下啊,这个案例仅供学习啊,不能作为其他用途。这个代码的话呢,需要说明。嗯, 它其实用到了什么?用到两个模块,一个是 take enter, 这个是用来做界面的,也就是我们运行代码之后它会有一个窗口,是吧?你像正常 python 的 话呢,它运行是没有界面的。 ok, 其次第二个是一个 web browser, 这个是浏览器模块,就是它呢可以直接打开浏览器, 主要是这两个模块。好吧,这两个模块需要他不需要安装,自带直接打包就好。那然后就是他这个图形界面这块,这块就不再啰嗦了,他是固定的,你如果会懂这个 g u i 开发的话可以看得懂, 不会了也没关系。以及最后我们做解析破解,是吧? ok, 你 把那个视频链接跟这个解析网站进行结合,就能够进行使用。好吧,所以这是我们整体的一个代码结构啊。哇,好帅啊。

那么今天呢给大家分享一个自动答题的案例,让我们一起来看一下,这是一个驾驶员考试的网站,对吧?那么这里面呢有一百道题目,让我们看一下这个答题脚本能不能够给我们去完成,来,我们直接关掉,然后呢运行这一个代码, 好,那我们鼠标不要动,他会自动进来这个界面,好,他现在开始答题了,对吧?好,那这个速度的话呢,还是比较快的,现在我们看到每一题呢基本上都是正确的,对不对? 那我们就把这个过程呢加快一点点,就我们稍微的暂停一下,那么大家看到现在呢我们的所有的题目呢,基本上已经答完了,对吧?好,那么这边呢显示的是我们 考试通过是一个满分,那就我们这个代码呢就运行成功了,但他的逻辑呢其实很简单,就是借助一个工具, 一个自动化的工具去打开这个网页,然后呢去读取里面的每个标签,进入到主网页寻求正确答案,然后呢再把它填上去。那么如果说大家想要我们这个拍饭的环境以及相关的源代码,可以在后台评论区里面留言。

呃,大家晚上好。呃,现在已经是 呃十二点了,对吧?然后很久没发视频了,我来给大家讲解一个关于自动打怪这个路线规划的一个 讲解啊,就是给它拆分一下,看看我们应该怎么写这个自动打怪啊?我以一个传奇为例啊, 然后以我今天上课讲了一个课程,这来进行给大家演示,在这里规划路线的话,我我采用的是这个工具。来来制作啊, 来,我先把它关闭掉啊,大家可以看到我这有个速成班的这么一个工具,打开它大概是这个样子啊, 那也就说我们可以通过这个工具来规划这个打怪的一个路线,我大概简单给大家演示一下啊,获取这个剧本,然后这里我们不用很密啊,写个三, 然后这里的话我们需要去捕捉这个图,捕捉的话,因为我我开的这个分辨率是比较小,大家看不见我的整个桌面,所以这个啊,为了让大家能够看得清楚,我把它拖到外面来啊,我们我们捕捉一下, 大概就是这这个样子啊,我们最好是打开这个地图,在地图上规划就好了,来捕捉一下这个就就可以了。呃,但是在这个地图上规划这个比较小,不方便我们规划, 对吧?所以等一下我们需要要把它弄成放大缩小,对吧?在这里我们先不管啊,我们先把这个地图的比例给它给它截进来,截进来的话我用这个截一下,这样 把这个地图的这个比例我们先给他截下来,等一下要通过换算他轨迹变成游戏坐标,对他进行一个一个规划吧。来,我们用这个来调整一下, 这里很明显需要往右边走一走这条,所以我们往右边移动啊,大概就会这个样子。这上面这条要往下移动一点,我们往下, 呃,大概就这个样子吧。这个横的就是它的宽太宽了,需要小一点,所以这里我们把宽剪掉。 呃,这个高太高了,剪掉一个高, 呃,我们就是通过这个工具把小地图的范围给它截取出来,方便我们等一下。就是对游戏的小地图坐标跟游戏坐标进行一个比例的一个换算, 因为换算这个比例我我看好多博主写的很复杂,其实我这个工具只要你把这个小地图的区域截图下来就行了,然后再对比一下这两个点分别对应的游戏的 游戏内的坐标,就可以获取到比例,直接换算就行了,不用搞的很麻烦啊。那这里我们已经选中小地图的区域了, 这里直接界定,选区界定,然后这上面会有一个左上坐标,右下坐标,我们分别填入就好了。这地方啊,小地图的坐标就是刚才我们截图的这个 g 啊,幺六二,这里三七, 然后这里是六五一,然后这是三七五。哦, ok, 底下这里还要填一下啊, 底下这里填的话,我们我们看一下,你大家仔细看一下,最最最这边应该是零零,对吧? 最最顶的,也就说这个小地图的区域对应的游戏坐标最小的应该是零零,最大的看一下大概就是幺二五零,两个都是二五零,说明是它的坐标里面是一个正方形啊。 稍等,我挪一下,这个挪不上来, 呃,这个挪不上来,我稍微弄,稍微拖一下这个,呃,稍微拖一下这个 大概这个样子吧。那也就意味着最小的坐标,游戏最小的坐标,这两这几个空其实就是填游戏最小的,还有最大的二五零, 二五零,那这样的话我们就获取了游戏地图上的屏幕坐标跟游戏坐标的一个换算比例,它会自动自动去换算,我们粗实化就行了。 那现在我们只需要对这个游戏进行一个规划,你怎样巡逻?对它进行一个巡逻的一个规划,来,我们规划一下。 呃,这我们只需要在这个地方进行规划就可以了,但是这个地图比较小, 不容易规划,我们把它放大,放大到最大,放大到四百,四百,呃,百分之四四百,这个时候他会变大一些,就方便我们去规划。目前我们人在这个位置,我想要呢走到这个地方来,那我们可以这样, 你就去做一条路线啊,这个路线你不要做到墙上去啊,不要做到墙上去,因为我们人是没办法走到墙上的。 呃,我大概就做这就做这么一段可以吧,因为我只是演示而已,我大概就做这么一条路线,就是让他从这个地方走到这个地方, 然后这边这样的话我就拿到了一条路线在这里, 这条路线是屏幕上的路线,大家记得,因为刚才我们是在这个屏幕上去规划走过来的,对吧?其实获取的这个轨迹就是屏幕上的小地图的这个坐标, 那我去寻路,我是不可能打开小地图的,所以我得把它转成游戏的坐标,转成游戏的坐标,我们用这个转就行了,粗尺画,然后转化五十三个点啊,然后 导出,导出的话我导出到桌面,然后我再导一次, 呃,就是就就是防止出现意外啊。呃,按照道理的话他他不会出现意外啊,但是我们人就是有这种心理啊,反正我多弄几次也不会出错, 对吧?但是如果出问题我少弄一次可能就会有问题,就是人的这种心理。然后大家可以看到这个就是我们转化之后的游戏内的坐标,就是刚才我们在这个地图上, 刚才我们在地图上规划了一条这么一个路线,这条路线就是小地图上的坐标,通过换算之后变成游戏的坐标,它会自动自动的去给我转化的,所以不用你你一个一个的转换,它会自动转换啊, 如果你想要一个一个转换,这里也有啊,这是单单个坐标转换了你,你把游戏的坐标输进去,他会变成屏幕的坐标,你把屏幕的坐标输进来,他会变成游戏的坐标。这里是根据需要啊,我们现在是批量,所以走的是上面这一条啊。 那我们来演示一下,看看他会不会从我们这个地方走到这个地方,因为刚才我们已经规划了一条路线了,来我们看看,让他直行一下啊, 直行的话我用这个速成班的这工具来执行一下就好了。首先的话我们先要绑定剧本啊,绑定,然后是用速成班的工具,速成班这里有一个叫轨迹行路,我们用这个执行一下就好了。哎,我放到这个位置啊, 这样的话大家能够看见就是角色整个行走的过程,然后我在这里执行一下轨迹行路啊,执行, 然后我们找一下刚刚保存的那个坐标就行了,找一下坐标, 坐标在这个地方啊,大家看一下啊,然后我点击打开他就会去执行啊,打开你看现在他就会沿着我这条路线,刚才规划了路线去 去巡逻,但我们还没写自动打怪,写完自动打怪之后,你就会看到他会一边走一边打怪,一边走一边的怪,等一下我就会演示给大家看,然后你可以看到现在他是不是从 a 点到 b 点,就是刚才我规划了这条路线, 对吧?所以其实我们规划一个巡逻路线,巡逻路线很容易的,就是在地图上画一条线就行了啊,这条线我们画的还是挺远的。 ok, 然后我们看看他有没有走过来, 然后你可以看到本来是这个地方,通过我们刚才在地图上规划,加加加,他走到这个地方来了,对吧?所以其实很简单。呃,用用我们这个工具,随便规划一下,如果你想让他走这边来,你就这样哗哗哗就过来了,对吧? 那在这里我再再给大家讲解一下我们怎样是巡逻,一边巡逻一边一边打怪的, 我是用什么样的一个逻辑思维去写的,就是我们是怎么样规划的,我给大家讲解一下,看大家能不能够理解啊。呃,假设这这个是我们的有游戏,对吧? 然后我画一张,画一张啊,比如说这个是 a 点,这个是 a, 这边是 b, 然后我由 a 到 b 去巡逻,对吧?我从 a 到 b 去巡逻结束,从 a 到 b 之后,我又让他从 b 到 a 去巡逻,这里我为了方便我写成两条,这样的话大家可能更容易理解,我我我这样写 啊,为了方便理解我这样写可以吧?也就说我们先从 a 到 b 去巡逻,然后到 b 之后再从 b 到 a, 这样的话就形成一个闭环,从 a 到 b, 从 b 到 a, 这是我们规划的一个巡逻的一个路线。但是当我们从 a 到 b 去巡逻的时候,可能我们走到这一这个位置 就会发现有怪,对吧?有怪我们不可能不打,所以我们会跑过来 在这个地方发现有怪,我们在这个地方攻击这个怪,然后经过一段时间这个怪就被打死了。打死之后我们是不是不能够中断这个巡逻?这时候我们又得啊,我们本来应该是往这个地方 去巡逻,这时候打怪完毕之后,我们又得返回来,又得走回来, 走到发现怪物的地方,对吧?从这地方去打怪,打完怪之后我又得打完怪之后又得回来,然后继续巡逻,巡逻到这个地方可能又有怪,我又得去打怪, 又得去打怪,可能在这个地方打,然后这个怪已经打完了。打完之后我是不是又得回到这个地方,然后我们又得回到这个地方 啊?又从这地方回到这个地方,然后继续巡逻,这时候我们正常走到 b, 走到 b 之后我们又又回去,回去的时候可可能在这个地方又发现又有怪了,然后我们又得来到这个地方, 这个地方打怪。打完 b 之后又让他再回到发现怪物的这个这个点, 这个点,然后继续巡逻,然后中间可能会出现无数字的有怪,然后 打怪再回去啊,这样的话,又到 b 了, b, a 又回去,又到 a, a 又到 b, b 又到 a, 由子的循环。这个就是我写自动打怪的一个逻辑思维,就是这么一个规划。 那像我们这样分析的话,我们怎样把它变成代码,对吧?你不变成代码,你,你分析的再漂亮也没用,对吧?我当然知道可以这样打了,对吧?有怪了我就跑过去打,打完我再回来继续巡逻,我当然知道了,问题是怎样把它变成代码,对吧? 所以我就我就给大家看一下。我,我今天上课也写了这么一段代码。呃,来,我现在的规划是这样,给大家介绍一下我的规划啊。 呃,我,我现在的这个上课用的代码路线大概是这个样子,给大家看一下。我是从这个地方这样, 呃,我大概是这这条路线啊,从,从这边是 a 吧,你可以理解成 a, 这边是 b, 是 这样。走走走走走,绕着一圈,这里会出现蛇形走位啊,因为这里比较宽,我弄了个蛇蛇,就是让它能够巡逻到更多的地方,然后走到这一步,这一步完成之后又再回来, 又到 a, a 又再回去,又到 b, b 又再回去,又到 a, 然后中间会发现无数个怪物,我们去攻击, 攻击完之后再回到发现怪物的地方,继续巡逻,又攻击,又巡逻,又攻击,又巡逻,大概就是如此的反复。 那我们光说不练没用啊,我来演示一下。呃,我现在是六十四克,对吧?我今天更新到六十四克速成班了。我们来看看这种打怪全程不用打开小地图,我们试一下。 呃,这这个代码我已经是已经是写好了啊,在这里我先跟大家讲啊,我是不卖原码的,因为我发现好多就是好多网友可能是看了我这个平台的视频都跑过来跟我买原码 啊,我是不卖不卖脚本的我是不卖脚本的,我是搞教学的,所以大家就要注意啊,我是不卖这个东西的啊,我是搞教学的。本身我啊我也没没打算卖这东西啊啊,主要是教学为主啊。来绑定, 然后你看看我这刚才我给大家分析的这个方法,我是怎样把它变成代码的。我这个是 python 啊,很多人不理解 python 啊,其实 python 就是 这这种,来看一下能能理解吗?呃。全是中文的, 呃,有个别是英文的,比如说如果 not in 就是 不在里面,大概很简单的一些,一些英文剩下都是中文命名的,因为我怕大家不理解,所以我写成中文了啊。 呃本身也是我自己不懂英文,对吧?来开始,那这个时候他就会不断的去巡逻,从 a 到 b, 大家看一下啊, 现在行行巡逻过去我是全程没有打开小地图啊。全程没,不用打开小地图,你看发现一个怪会记攻击,然后再回到发现怪的地方继续巡逻,其实他的逻辑思维很简单, 对吧?当我发现怪的时候我就记录一下我在什么地方发现怪的,然后我就把怪打死,再打完之后再原路返回到发现怪物的那个点,然后继续巡逻啊,其实很简单。这这个这个路线很简单啊。这个规划, 然后我们要来走一圈然后再绕回来,如果没什么问题我们这节视频就结束啊。 呃在这里的话就是我我我给速成班写的工具是比较多的。其实不止一个工具啊我都放在工具里面。所以。呃因为速成班你得速成啊 对吧。你要是真的去学这个 python 学这个编程你学两个月都都都不敢说你入门了我跟你讲你学两年你都不敢说你精通 python 太多了所以只能够速成。速成的话就是我把很多功能写到写成工具大家用工具弄一下就可以了。 呃就像这个刚才那个鬼鬼去寻路你看我稍微在在地图上画一下就能够让他去执行了。 呃你看他现在准备到终点了啊整个寻路的过程中发现怪会自动去攻击然后再回到发现怪的地方再继续巡逻。又有一个怪啊。 呃这个地方有点尴尬因为这个怪他也不出来我要到那一边怪又跑到这边。嗯就看看谁比较犟啊我看看他是哪个都犟。这里有有有一堆石头嘛。 呃有一堆石头比一下水比较犟啊 啊他也他也不愿出来我要跑过去他也也跟着跑啊。哎出来了出来就好说了啊。 ok 那 就解决掉了啊。呃有时候你你运气不好的时候还真的很犟这这这个怪啊 对吧。所以你去写代码的时候如果你想要解决这个问题你肯定要写一个异常处理。呃比如说 我我要是打一个怪我打两分钟应该打完了如果两分钟还不打完我就要舍掉了就就不打了直接换换目标。你看这时候他又要回去了啊他现在又要回去了 因为这里已经走走到头了,你看又返回去啊又返回去,呃,全程不用开不用开地图了。我。我在第二期的时候是打开小地图来寻路的,结果有个人说,哎呀, 那我不打开小地图不行吗?呃,后面我看人家老是这样讲,那我就干脆就不打开地图了, 对吧?那这样我看看你还说什么没有,又又不说了吧,对吧?呃。后面的话我会把那个自动捡物品给加进去, 这样的话他就会形成一个自动打怪捡物品,现在他是自自动捡的,因为这个是开了充了钱了,充了钱他会自动捡 啊,我,当然我是会去写那种原始的走到物品身上然后把它捡起来。这个是这个是我们同学的一个账号,是充了钱的,就是他会自动捡,不过我们上课肯定不用这个,我们会自己写捡物品的。 还有自动进地图呢。呃,出到外面又再进来的,这些都会讲到,呃,都会讲,你看发现怪,呃。攻击,回到发现怪的地方,然后继续巡逻, ok 啊,准备回到原点啊,这里我是故意让他绕一圈,这个地方比较宽啊,所以这次给他绕一圈。 呃,还有我这个群啊,我这个游戏交流群就是大家申请的时候尽量用, 就不要用小号啊,也不要用女号啊。我不是歧视女性啊,而是说十个女的起码有八个是进来打那种 带颜色的广告的,所以我基本上是不让女的进啊,这样 ok 了啊,我们就不用演示那么多了,基本上就是这这么一个,然后给大家看一下这个代码啊, 然后全程的代码大概全部是这种,比如说打怪的是这种啊,全程都是这种啊,百分之八十都是中文的。然后巡,巡逻的代码在这里啊。 呃,巡逻的代码在这里,大家可以看到这个就是我写的这个代码,整个所有的代码都在这里了。 然后我再声明,我,我不卖脚本啊,我不卖脚本,所以你也不用不用加我,说跟我买什么脚本啊?我没有,没有脚本出售啊,我这边是教学的啊,如果对教学感兴趣的,你们再看我的那个主页,自己联系一下啊, 然后评论我可能看的比较少,因为我本身的评论也是比较少的 啊,好多人好多人来加我,都是比较感兴趣,对游戏脚本比较感兴趣的。然后啊,我就讲这么多吧,不然又变成被限流了啊。那大家如果对游戏脚本感兴趣的啊,再咨询我吧。

今天给大家带来的是 python 抢票脚本,同学们大家好,今天给大家带来一个使用 python 旁程序,然后用它来去实现幺幺三零零抢票的一个功能。好吧,这个是借助 siri 库来进行的。 ok, 它是一个自动工具。 好,那首先的话呢,先要先说明这个程序代码必须要有 python 环境,如果没有的话是运行不了的。好吧,接下来我们来看下这个程序效果。首先点击运行走 运营之后的话呢,第一步你需要先登录你的账号, ok, 这边我们就用扫码登录来登录一下,确认就好了, 确认好之后,然后剩下的它就会有程序自己去操作,这个你就不用管了,好吧,你自己只需要设置好目的地,出发点日期,然后进行相关操作就可以了。好吧,剩下的呐,最后一步点确定呐, 是不是他就自动完成了,然后就提交,提交完之后你就等着付钱就行了。好吧,这个过程全是自动操作的,不需要你做任何的相关操作, ok, 这个话呢,需要等一小会,因为他这个提交会慢一些,好吧,最后就是你只要付钱就行了, ok, 那 这就是我们这个程序的一个效果,注意啊,十五分钟内啊,如果超了时间,那就票就没了啊,所以记得注一下。 然后这里也需要注意点,就是我们在设置这个抢票的时候,你需要注意你的出发地是什么地方啊,你目的你从哪开始出发,对吧?然后目的地在哪,以及对应的日期,这个来设置一下,而且这个日期需要注意啊,只只能在十五天之内啊,好吧,因为大家知道,如果你在三幺二三六买过票的话,应该知道他只能买十五天之内的票,超过十五天是买不了的。 好吧?行,那么这就是我们这个城市的一个效果。好吧,那谢谢大家,我们下次见,拜拜。 nice。

一天一个拍摄干货分享,今天分享的是拍摄实现全自动抢票,同学们大家好,今天给大家带来一个使用拍摄旁程序,然后用它来去实现幺幺三零零抢票的一个功能。好吧, 这个是借助随礼库来实现的, ok, 是 一个自动工具。好,那首先的话呢,先要先说明这个程序代码必须要有拍摄环境,如果没有的话是运行不了的。好吧,接下来我们来看下这个程序效果。首先点击运行走 运营之后的话呢,第一步你需要先登录你的账号, ok, 这边我们就用扫码登录, 登录一下确认就好,确认好之后,然后剩下的他就会有程序自己去操作,这个你就不用管了。好吧,你自己只需要设置好目的地,出发点日期,然后进行相关操作就可以了。好吧,剩下了,那最后一步点确定那 是不是他就自动完成了,然后就提交,提交完之后你就等着付钱就行了,好吧,这个过程全是自动操作的,不需要你做任何的相关操作。 ok, 这里的话呢,需要等一小会,因为他这个提交会慢一些。好吧,最后就是你只要付钱就行了, ok, 那 这就是我们这个城市的一个效果,注意啊,十五分钟内啊,如果超了时间,那就票就没了啊,所以记得注一下。然后这里也需要注意一点,就是我们在设置这个抢票的时候,你需要注意你的出发地是什么地方 啊?你目你从哪开始出发,对吧?然后目的地在哪,以及对应的日期,这个来设一下,而且这个日期需要注意啊,只只能在十五天之内啊,好吧,因为大家知道如果你在三幺二三六买过票的话,应该知道他只能买十五天之内的票,超过十五天是买不了的。 好吧,行,那么这就是我们这个城市的一个效果。好吧,那谢谢大家,我们下次见,拜拜。我的天呐。

哈喽,大家好,我是玉米,那么今天的话跟大家分享一个微信聊天自动回复的小程序。首先给大家先看一下我们大概的一个效果,我现在我来找到我的这个代码去进行了一个运行, 运行之后你会发现它能够自动的去帮我打开啊,打开什么呢?打开我的这个微信聊天框,然后呢它会去查找到我的未读消息之后,它会去自动的去帮我回复。它 刚说他给我发了一个你好,那如果说他给我发一个别的消息呢?对不对?我们可以一起来看一下啊,那么他在发了这个你好之后,我可以再一次啊,因为我刚刚是已经点开他这个消息框,那么如果说他现在再给我发一条消息的话, 我们来看一下我能不能去回复他这个消息呢?比方说他回啊,给我发一个,哈哈哈,那么我们回了他一个,呵呵呵,前面的话我们是啊有点击在我们当前这个聊天框,所以说这条消息他不是一个未读的, 未读的一个状态下,所以呢去没有去进行到一个回复。好,这个呢就是我们一个自动回复的效果。那么现在我们可以来看一下我们这个代码是怎么去进行到一个实现的,来,我们一起来看一下我们的一个实现代码, ok, 那 么首先的话我们需要先去导入我们所需要用到的包,第一个呢叫做 pandas, 这个 pandas 这个包呢?哎,我们需要用它来读 csv 文件里面的数据, 比方说我们刚刚我们所看见的他给我发了一个你好,然后呢我回复了他一个,哎,我不好,他给我发了一个,哈哈哈,我回他一个,呵呵呵。所以说这个回复内容以及这个关键词,还有这个序号这些内容是我们在这个 c、 s、 v 这个文件里面已经 提前的去定义好的一个内容,那么我们就需要用到 panda 这个包去读取这样的一个内容,明白吗?根据他所发的一个消息去回复他啊? 那么第二个的话就是一个 number pad, 那 么这个 number pad 的 话呢,它的作用是可以将我们读取到的数据啊转换成一个列表的数据。好,那么第三个包呢叫做 ui automation, 这样的话呢,它是一个微软所提供给我们的一个 ui 自动化的库, 如果说我们能够通过它呢就能够去实现一个 ui 界面,也就是我们微信聊天框的界面,能够去实现一个 ui 界面的一个自动化的操作。比方说像我们刚刚我们的电脑,它自动的去点击, 去打开某个文件,打开某个窗口,又或者呢是去修改我们某个进程的操作,这样的话呢就是我们这个 ui automation 他 去做的一些事情。 然后的话呢,我们在接下来我们在这一点啊,我们在这个地方去绑定了微信的一个哎主窗口,去打开了我们微信的一个聊天框,然后接着呢我们在这里打印了一条提示语句啊,打印一条提示语句啊,接着我们用到这个啊,去 切换到我们指定的一个窗口的函数,也就是刚刚我们所看见啊切,刚这也是先绑定,绑定完了之后给它切换啊,切换到微信窗口,同时呢我们再去微信窗口里面啊, 微信的话他会有很多空间啊,比方说我们的朋友圈空间,比方说我们的绘画空间,那么我们在这里呢是去找到一个绘画空间去进行到绑定,明白吗?这个时候找的就是啊我这个地方啊,看没有我左边啊,右边右边这一块区域,他是一个绘画区,然后这边呢是一些联系人的一些目录, 所以说找到这个绘画区域之后进行到一个绑定,绑定完了之后,我再通过我的 pandas 啊,它这个里面的一个 read csv 这个函数,去进行到一个读取我当前回复数据的这个 csv 的 文件,同时呢给它指定了我们的编码格式是 gb 幺八零三零。 ok, 那 么这个 g b 幺八零三零的话,其实跟我们日常所用到的一个 g b k 是 差不多类型的啊,是差不多类型的,只不过呢这个 g b 幺八零三零啊,它的一个范围会更大一些,所以说我们在这里如果说用 g b k 是 不会报错的话,那么我们去用这个 g b 幺八零三零也是同样的,没有任何问题的。 ok, 那 么我们在哎拿到这个哎回复消息之后啊,现在还没有拿到消息,现在我们还只是读取了这个 绘画空间啊,绘画空间,所以呢我们在这里通过一个死循环啊,去判断,去接收消息,那么我们呢通过一个循环,首先要去查找一个未读的消息, 那我这里给他设置一个参数,是啊,等于四,什么意思呢?也就是说啊,我在我当前这个聊天绘画这里啊,绘画这里可能会有好几个绘画框, 那么这同时呢有这么多个绘画框,我只会去查找前面四个绘画框,这个呢就是我一个参数一个作用,明白没?一个参数一个作用,然后呢我再通过啊,通过这四个框里面啊去找到有没有未读的消息, 所以说我们在这里去找到未读的消息,看没有这个死循环的话,我们是为了让我们这个,哎,可能超时, 可能我这个四个聊天框啊,没有一个未读消息,那么我这里呢可能会哎发生报错,所以说加上这个啊,加上这个的话就不会出现一个报错一个现象啊。那么在这里的话找到这个前面四个绘画框,然后呢再从这四个绘画框里面去找到一个未读的消息, 如果说找到了之后,我去点击这个未读的消息,点击好了之后可能他同时给我发了四五条消息,哎,也有可能呢是几十条消息, 那么这样的话呢,我只会去读取最后一条消息,明白吗?只会读取最后一条,那么读取完了之后啊,读取完了之后,我们去判断判断一个关键字,也就是说他给我所发的一个内容是什么东西,对不对?我就根据这个关键字啊去回复到哎当前的一个信息, 那么完了回,回复完了之后,我们将这个数据去进行了一个筛选啊,我们在这里的话啊,在这里的话只是指定的要回复什么东西,但是呢还没有进行到一个回复啊,还只是先去判断一下,判断完了之后,我们将这个数据给他进行了一个筛选, 如果说中间存在一些空格对不对?我们要去进行到数据筛选,筛选完了之后,我们将这些空的数据给他移除掉, 最后呢我们再将拿到这个数据啊,因为它现在还是一个 number pad 的 一个一个数组,所以说呢,我们要通过咱们这个 to list 啊这个函数去将我们拿到的数组给它做成一个列表数据,然后呢我们再针对这个列表数据去进行了一个判断,如果说我们有匹配到啊, 这里是匹配到什么数据呢?是匹配到啊,我们文档中啊有定义到的一个关键词的数据,如果说你回的是一些其他的东西,那么你就不会出现在在我这个意图判断里面啊,明白吗?所以说能够匹配到啊,我想要的这个数据,我能够自动回复的数据的时候, 那么我呢就将我相应的一个内容给他,哎进行到一个写入啊,进行到一个输入,将一个相应的一个回复数据给他输入进去,输入完了之后,我们在这里呢去控制了电脑的一个回车键啊,那么呢就给对方实现了一个发送消息的一个功能。 最后呢因为前面我们所拿到的是一个绘画框,看到没有是拿到的是我们右边这一块区域,并没有去找到啊,他并不知道我们回的是哪一个联系人, 所以说呢想要确定一下啊,我们这个绘画栏的一个联系人,我们可以在这里呢去解锁一下,通过我们这个消息匹配去解锁一下,那么如果说还有第二种情况啊,还有第二种情况,我们可能没有匹配到任何的数据啊, 这个数据呢?他可能给我发的是,哎,一些不是我这个自动回复文件里面的一些数据,他给我发一个, 呵呵呵,那么他发的呵呵呵,不是,哈哈哈,你觉得我能回复吗?肯定是不能的,如果说他给我发一个一,他给我发一个二,那么这个时候我能够回复吗?很显然不一定,对不对?所以说我就给他回一句,我没有理解你的意思,明白吗?没有理解你意思, 因为他发的这个消息不是我这个自动回复文件中所定义所规定的那几种,那么呢我就全部都统一回复一个,哎,我没有理解你的意思, 那么这个呢就是我们一个整体的一个代码实现,现在呢我们再来看一下最后的一个效果,哎,如果说我现在去运行了这个代码,我们一起来看一下, 来,我们一起看一下运行好运行之后是不是来我们重新来看一下。如果说现在出现一个未读消息, 出现一个未读消息,我们看一下能不能进行到一个自动回复呢?对不对?他说一个喜欢你啊,我们说没有理解你的意思,如果说现在还是未读情况呢,我们可以再来看一下,如果他出现的是我这个,哎,你好,或者说告辞,对不对?他说告辞,好的 啊,他说喜欢你,我没有理解你意思啊,他给我来一个告辞啊,看来是被我们伤到心了,好吧。啊,那么这个效果呢?我们就演示到这里了啊,这个呢就是我们最终的一个自动回复的一个效果啊,就先讲到这里了。

好,同学们,今天呢我们来分享一个小游戏的制作,那俄罗斯方块这个小游戏的话,相信大家都有玩到过,对吧?那我们今天呢来用 python 去搭建一个俄罗斯方块小游戏 啊,那这里呢,我们第一步先来搭建我们整体的游戏界面,那这里我们搭建游戏界面用到的呢是 ticking 这一个第三方库,它呢通过 tiktok 方法能够创建一个窗口出来,我们来运行一下,看一下效果。 ok, 那 这里呢我们可以看到它生成了一个比较小的界面,对吧?现在这个界面里面什么东西都没有,还是个空白状态, 那我们接下来来将这个界面填充完整,那这里我们俄罗斯方块的界面呢?大家应该都玩过,知道它是用一个格子,一个格子进行一个搭建的,对吧?那我们这里要画格子的话,就得用到 tiktok 里面的 comworks 功能, compos 功能可以去帮我们绘制单个格子。那这里我们先给整个界面做一个全局的设置,我们一共要有多少行多少列,对吧?然后每一个格子它大小给它规定好。最后呢我们就可以得到整个界面的一个高和宽 啊,那接下来呢,我们就可以通过这个 t k 点 compos 啊,去创建我们一个定高定宽的这一个界面 啊,那中间的这一些格子我们怎么去画呢?我们看到这两个函数,我们通过 x 零 y 零呢去记录我们一个格子的左上角位置, x 一 y 呢去记录一个格子的右下角位置, 通过对角的形式呢去规定好我们的这一个格子所在的位置,然后通过我们 comis 点 create 的 方法呢,去创建构建我们单个格子啊, 啊,这里的几个参数,我们前面的坐标,对吧?然后我们填充色以及我们的边框颜色,边框的一个宽度啊, 设置好之后呢,因为是单个格子,那整个界面多个格子,对吧?那我们就用双重的一个负循环去调用我们单个格子的一个构建,最终就能够得到我们最后的这一个界面了啊, 我们来运行一下看下效果啊,那这里的游戏界面我们做好之后,那接着我们来做我们的游戏道具,也就是我们俄罗斯方块中的方块 啊,方块的一个做法呢,我们来看一下。首先我们可以通过两个字典呢去记录我们方块的一个坐标,以及它对应的填充色,这里我们通过第一个字典设置一个 o 来记录我们的这一个 坐标啊,那这里一共有四个坐标,对吧?那这四个坐标呢,其实代表的是我们正方形的四个方块所在的一个位置啊,然后它的填充色呢?我们给它设置的是 blue 啊,这里我们设置好之后,我们就可以通过我们的函数这里的逻辑去进行一个构建了, 那我们首先去获取到我们字典中它的一个坐标以及它的一个颜色啊,然后我们通过这里的 判断呢,判断一下我们构建的一个位置,也就是我们设置的这个坐标,它是在哪一个位置的,是否在我们游戏界面之中,这里我们通过这里的相对坐标去改成了一个绝对坐标啊,然后判断好之后呢,去调用我们的一个构建函数 啊,这里构建函数的话,其实就是我们刚刚单个方格的一个会制啊。嘿,那这里我们来运行一下,看下效果 啊,可以很明显看到我们在这个位置去绘制了一个正方形的一个俄罗斯方块,对吧?那这是我们正方形俄罗斯方块的一个绘制,那其他的正其他的图形呢?我们就是在这里去设置好他其他图形的一个坐标以及填充颜色就可以了,那这里我们来运行一下 啊,那所有的图形都已经出来了,对不对啊? 图形有了之后呢,那么我们接下来去做一下他下坠的一个动画,那下坠的动画这一种东西呢?动画他是在我们计算机中其实是多个 图像来组成的多个定格图像呢,通过我们固定的一个时间去进行一个刷新,然后得到我们最终的一个频率啊,这里给到的是一个五百毫秒的一个样子啊, 然后我们去做相对应的一个位置的变化,生成新的这一个地方啊,新的这个动画,那这里我们通过这呢,通过这里我们拿到我们要下坠的这一个方块,他所有的这一个类型以及颜色,什么位置之类的一个东西。 拿到之后呢,我们去生成一个最原始的路径,也就是生成我们最原始的一个动画, 生成完元素动画之后,我们再通过更改他的一个坐标去生成新的一个动画,那这里我们生成了两个动画之后呢,我们再去进行一个移动, 边移动的过程中我们就边做一个图像的刷新,最终就会形成我们下坠的这一个动画,我们来运行看下效果啊,可以看到现在这个正方形它正在以每一格一格的进行一个下坠,对吧? 啊?但是呢下坠到我们最底下之后,他超出了我们的一个界面,对吧?那么我们接下来呢就将他的这一个呃下坠过程去做一个判断,让他呢能够在下坠到我们边界的时候去暂停一个下坠。啊, 那这里我们通过这啊,我们通过这个 check 沐浴方法去设置啊,我们通过这里呢去设置他的一个下坠方向,哎,通过这种下坠方向的一个控制,然后去做他的坐标的一个判断, 如果说他的坐标超出了我们下面的这一个边界,那么我们就把它固定在边界上。啊,那, 那这里除了边界以外呢,我们还会有一个东西是我们这个方块它的一个坐标, 那方块它在固定在边界之后呢,我们其他方块在方块之上的话,它也需要暂停,对吧?所以我们这里呢会有一个 broker list 去保存我们所有的方块信息。那如果我们的 方块在下坠的过程中,他的坐标大于我们这个类似的列表里面其他方块的一个坐标,那他也需要暂停,对吧?啊?那这里我们来运行一下看效果 啊,这里我们不同的方块一直在下落,对吧?最终呢每一个方块都是在做一个叠加效果,对不对?虽然这个地方我们还没处理好。啊? 啊?这是我们方块下坠动画的一个制作,那动画制作好之后,我们现在来做一下我们的操作, 我们的方块除了下坠直接下坠以外,我们还可以控制它左右的一个移动,对吧?那这里我们想要控制方块左右移动的话,要通过我们 combs 里面的必要的方法去绑定我们的事件, 在这里我们通过按键是按左边呢还是右边呢?去绑定好它移动的方向就可以了啊? 啊?这里我们看一下移动它怎么去写的,控制方向怎么去写的,我们这里呢有一个, 呃,有一个变量去记录了他向下的一个向下的一个方向,对吧?那如果说我们这一个事件是按的左键的话,那他将 x 轴的方向呢?从零去变成负一,因为我们 x 轴向左是负轴,对吧? 向右的话就把 x 轴改成一就可以了,那这样我们就能够去控制我们的这个方块,它下坠的过程中呢,还往左边还是往右边进行一个移动,那这里呢我们来运行一下看下效果啊, 这里是不是可以正常的左右去移动我们的方块啦? ok, 左右移动我们做完之后呢,我们的方块是不是还应该能够变化,对吧?我们正常玩俄罗斯方块的时候,按上键我们的方块就能够去转换它的一个形状,方便我们去完成对应的一个操作,对吧? 还有呢,按我们的下键它能够去进行一个快速下坠的情况,那这里我们同样的通过并的去绑定事件就可以了。 那这里我们看一下他的变化逻辑啊,他这里的变化逻辑呢,其实也很简单,就是去把我们的这一个坐标进行一个更改啊,那下坠的也一样,去往去快速的让他下坠到我们的最后一行就可以了。好,这里我们来运行一下,看下效果 啊,变化是不是能够做到了,然后快速下坠是不是也可以了? ok 啊,那这里下坠什么的我们都做完了之后呢,那最终我们还有一个游戏的 一个结果,以及我们满足一行之后,他能够自然消除的一个状态,对吧?那我们来看一下第十步,第十步这里呢,我们想要去计算游戏结果的话,其实很简单,利用到我们拍子中的累加器,设置一个变量去进行我们的使用就可以了。 在这里我们来看一下 check and clear 这个函数,这个函数呢就是去判断我们一行的这一个方块是否满了,满了的话就进行消除,消除的过程中呢,我们去做一个,哎,这一个累加器的增加就可以了。好 啊,这里我们增加好之后呢,还一个游戏结束需要做,对吧?那如果说我们的行数啊,它超过了这一个顶部的时候呢,我们就需要去做一个哎, 这一个成绩的弹出,用一个新界面让我们看到成绩是什么样的,这里我们用 checkmark 这一个去判断好我们当前这个方块所在的一个位置,如果超过了我们最上面的这个情况呢,那我们就去弹出这样的一个 哎窗口,通过 ma message box 去进行一个窗口的弹出,让它提示我们一共得到了哪些信息。好,这里我们来运行一下,哎 啊,消除是正常的,对吧?那我们看一下它能不能结束啊?结束之后是不是弹出了一个成绩窗口,对吧?那这就是我们今天分享的这一个俄罗斯方块小游戏的一个构建。

今天给大家带来的是大麦王抢票,宝子们是否也体会过与心爱的爱豆演唱会擦肩而过的无力感?每次参与争夺都是失败的结果。别灰心,主播今天就带你秒锁原价票。首先我会将代码打包 分享给有需要的你。接着右键运行代码,跳转到大麦官网登录界面,登录账号,紧接着程序就开始抢票了。最后来到支付页面,只要在十五分钟内完成支付就可以了。学会了这招,很难再去担心能不能抢到票了。

三个排序脚本,让你应对百分之八十的面试,我会给出回答的视力和代码的展示。一、接触接口自动化的词脚本,这个脚本我们可以应用在外部或者 app 的 项目中。接口是前后端交互的核心,我经常需要验证接口的连通性和基本的正确性。比如用户登录,那我的速度是这样的,我模拟一个完整的请求 响应验证的链路。首先我可以使用 request 库构建请求,然后我进行三层递进式的断言来确保质量。首先验证状态码,比如两百,再验证响应体结构,比如是否包含 token 字断。最后验证具体的业务值,比如返回的用户名是否 准确。那这个代码呢?虽然简单,但是它展示了接口测试的完整闭环。在实际工作中,我会把它封装成函数或者类,方便在多个测试用力中附用。这个脚本的价值呢,可以帮我快速发现接口级别的回归问题,比如自断缺失、类型错误或者业务逻辑的漏洞。它是我们自动化测试套件的基础模块,执行一次只需秒级, 效率远远高于手动测试。二、数据驱动的测试脚本这个脚本呢,我们可以验证多种的输入情况,比如说登录接口,我们可以验证正常情况,异常情况,比如密码错误,账号锁定和边界情况,比如超长的用户名。如果为每个场景都写一个独立的函数,那代码会非常的荣誉 且难以维护。我们可以这样采用数据驱动测试的模式,它的核心思想是将数据驱动与测试逻辑分离,把所有的测试用力包含用力的描述数据和预期结果,组织在一个列表或者外部的文件中,然后用 p i test 点 mark 点 parameters 这个强大的装饰器让测试函数自动循环所有数据。我们只需要维护 test 点 case 这个列表,它就能轻松地去登山改查所有的测试场景。比如添加一个新用力测试账号,不存在,只需要加一行数据就可以解决, 极大的提升了测试的可维护性和拓展性。在业务规则变化的时候,我们只需要去修改数据,而不是去罗列代码。这个测试报告也会清晰的展示每个数据,每行用力展示的执行结果,便于精准的定位是哪一组的数据出了问题。 三、数据库的校验校本这个校本呢,是一个典型的端到端的验证场景,很多 bug 在 于前端或者接口看似成功了,但是数据它没有正确的落魄 状态不对,比如用户的支付成功,但订单状态在数据库里还是未支付。那我的解决思路是,我会验证分为两个关键的步骤,模拟真实的用户的完整操作路径。一、通过调用接口 模拟用户操作,比如提交订单。二、我会直接查询数据库,验证数据库是否按业务规则被准确的创建或者更新,这样我们能确保应用存储层的业务一致性, 以及数据的流转是正常的。这个代码我们可以通过 request 库调用下单的接口,并且获取系统的订单号。然后我们用 cyms 口去连接数据库,用这个订单号 去查询,并且我们可以断言关键的字,比如商品的 id 数量和状态,这些值是否符合预期?这个脚本的价值可以帮我发现那些纯接口测试难以发现的深层 bug, 如事务提交的失败、脏数据状态机错误等等,它体现了我的大局。质量观测试呢,我们不能只停留在界面或者接口,必须验证数据的最终一致性,这样呢,能保证业务正确性的最后一道防线怎么样,你学会了吗?

电影里的黑客把 u 盘一插,就神不知鬼不觉地盗取对方电脑文件。你知道这种科幻操作是怎么实现的吗?今天教大家用 python 写一个脚本程序,复刻一下。温馨提示,本视频所有操作仅供学习和娱乐,请勿将技术用于非法用途。 我们需要安装派位 n 三十二第三方模块派问三十二是 python 在 windows 平台上最重要、最强大的扩展库之一。 python 本身是跨平台的,为了保持这种通用性,它的标准库如 os 模块只能提供最基础的系统功能, 而 piwen 三十二则允许你使用 piwen 代码,直接调用 windows 独有的底层的所有强大功能。 win 加二,输入 cmd, 打开终端,输入 p i p install piwen 三十二回车即可完成安装。因为主播已经安装好了,所以不再重复安装了。 我们打开 p 叉 m, 开始敲代码。我们需要导入 os 模块。 二 s 模块是 python 自带的,因此不需要安装它,它主要负责处理文件和目录。我们还需要导入刚刚安装的 pywin 三十二模块的子模块。 win 三十二 file pywin 三十二并不是一个单一的模块,而是一套模块的集合,而其中的 win 三十二 file 专门封装了 windows 关于文件管理管道 pips 和异步 i o 的 api 函数。 我们这里使用 o s 模块里的 walk 函数。 walk 括号函数是一个用于便利目录数的生成器函数, 其功能是地归便利指定目录下的所有文件和子目录,并自动处理目录数的层级结构,生成三元组, dir path dir names, file names。 我 们这里就便利地盘, 因为生成的是三元组,所以需要三个变量来接受,其中 root、 ds、 files 分 别接受目录路径,当前目录下所有子目录名和当前目录下所有文件。再来一层内循环来便利所有的 files。 再来个条件判断,这里我们只需要盗取 mp 四和 mp 三格式的文件,想盗取的文件格式可以自己定。 nsw 括号函数用于检查字符串是否已指定的后缀,结尾返回处或 false, 可检查单个或多个后缀。 定义一个变量 a 来接受被盗取文件的完整路径, 再来定义一个必来接受目标位置的文件路径,目标地址就是我们的 u 盘,我们在 u 盘里创建一个文件夹叫被盗取的文件复制,其路径赋给变量 b。 双斜杠并不是 python 的 地板除法运算符,而是文件路径分格符。 再来使用 copy file 函数把 a 复制给 b。 copy file 函数有三个参数要传,分别是原文件、目标文件和目标文件存在时是否失败。第三个参数为 false 时会覆盖原有的文件,处时会跳过原有的文件。 我们这里定义一个变量 num, 用来表示已经复制的文件数量,用 prince 括号打印出已经复制完成的文件数量,最后再让 num 值加一。因为 copy file 函数可能会发生异常,所以我们需要捕获异常, 当发生异常时,直接 exit 括号函数退出程序即可。我们来运行程序, 可以看见运行的相当成功。我先终止运行了,因为 d 盘文件实在有点多,我们来看一下 u 盘里有没有我们复制的文件。 u 盘里也有文件了, 接着我们来打包这个程序,打包成可以无需依赖 python 环境的 se 文件。 我们随便搞一张图片,放在和程序同级的目录下,把它的格式改为拷格式,因为拷是 windows 操作系统图标文件的格式。在这个目录下输入 c m d, 打开终端,输入 pins dollar f 杠 i 图片名,文件名,然后回车 等它打包完成, 再把 s 一 七文件复制到 u 盘里,双击运行,可以看见效果相当不错,但是运行的时候有这个黑窗口容易被发现, 所以我们对这个代码和打包方式进行稍微的调整。这里引入一个模块,叫 windows 操作系统上发出一些声音,把 exit 改为 continue, 这样遇到错误时会跳过当前文件,继续处理下一个文件。 再利用 win 丧模块里的 b p 函数,它有两个参数要写,分别是频率和播放时间,给你们听一下效果, 效果也是非常 ok 的。 接下来再改一下打包方式,让它在运行时不要弹出黑框框,在后台静默运行 打包方式,在原有的基础上加个 w 就 行。 然后我们双击运行程序,发现没有黑框框了, ctrl 加 shift 加 s key, 打开任务管理器,发现它确实在运行, 我这里就先终止它了,因为文件数量确实有点多,一时半会儿盗取不完,但是运行完肯定会有声音的。 最后想了解 o s 模块和 piwen 三十二模块的同学们可以参考这两个网页。今天的内容就到这里,我们下期见。

每次想看电影发现都要付费,那么宝宝这个拍摄小代码你一定要拥有了,这个代码可以让你实现电影自由,无论什么电影哦,脚本代码,外包库什么的都全部弄好了,这里还有大量的有趣小代码,感兴趣的小伙伴这里获取哦。 那么我们来运行一下代码试试看,点击运行,首先会弹出这样一个框框,然后呢这个框框呢在里面输入你想要看的地址就行,有时候呢运行不了,你就试试别的通道哦。首先来选一个我们想看的电影或者电视剧,那么我们选择猪猪侠吧, 这里呢需要是 vip 才能观看哦。我们先复制它的这个链接,然后再打开我们这个框框,复制进去,点击播放,这个时候它就自动打开浏览器,稍等片刻,这个时候它就会加载出来喽, 这样你就可以看任何电影了哦,有四 k 等等画质可以选择,是不是超级爽呢? 真以为你还有流量啊,你个死猪,哼,送盒饭是你以后唯一的活路喂,看什么看,不用干活了!

一天一个 python 干货分享之自动答题。好的,各位,那么今天呢给大家分享一个自动答题的案例,那么这个案例呢是基于 python 编辑的,所以呢大家在运行之前啊,先把 python 的 环境装好, 那我们一起来看一下啊,这是一个驾驶员考试的网站对吧?那么这里面呢有一百道题目啊,那我们看一下这个,呃,答题脚本啊,能不能够给我们去完成,来,我们直接关掉啊,然后呢运行这一个代码,好, 那我们鼠标不要动啊,它会自动进来这个界面啊,好,它现在开始答题了对吧?好了,这个速度的话呢,还是比较快的啊, 好,那么呃现在我们看到每一题呢,基本上都是正确的,对不对?好,那我们就把这个过程呢,呃,加快一点点啊,就我们稍微的暂停一下, 呃, ok 啊,那么大家看到现在呢我们的所有的题目呢?呃基本上已经答完了对吧?好,那么这边呢显示的是我们呃 考试通过啊,是一个满分啊,那就我们这个代码呢就运行成功了啊,但他的逻辑呢,其实很简单,就是借助一个工具啊,一个自动化的工具去打开这个网页啊,然后呢去读取里面的每一个标签,呃,就到直网页寻求正确答案啊,然后呢再把它填上去, ok 啊,呃,那么如果说,呃,大家想要我们这个拍摄的环境啊,以及相关的元代码,呃,可以在后台评论区里面留言啊,好,那我们这一期分享就到这里结束。厉害。

这都二零二六年了,我不允许你还不知道!用 python 就 可以轻松实现自动抢票,再也不用为抢不到车票而烦恼了。只需要用到我的这份代码,就可以让你轻松抢到那张心心念念的票。当别人还在蹲点抢票的时候, 你已经回家美美的去赶大集了,想想都很舒服。好吧,接下来鼠标右键运行代码,它会自动帮我们打开抢票网站,接下来全程自动化操作,不用我们手动操作,最后只需要你支付订单就可以了。牛逼!牛逼!

同学们大家好啊,今天给大家带来一个新的案例,基于我们的 python 和 tikner 制作了一个微信聊天系统,我们来运行一下,看看它是一个什么样的效果。 它会告诉我们要登录或者注册,我们之前没有登录,没有注册过,我们先注册一个需要注册才能登录的,如果我们不注册就登录的话,它会给我们提示错误 啊,他会告诉我们用户名和密码错误,因为我们还没有注册,我们现在来注册一下,注册一个叫做 animate 的 用户啊,注册成功之后我们就可以进行登录了,因为我们刚才注册了用户名和密码 好之后,我们就可以进行一个正常的登录啊,然后主界面它就是这样的,我们可以发送信息,可以刷新这个聊天记录,可以退出登录啊,我们先来发送信息啊,它会告诉我们,让我们输入接收方的用户名啊,我们随便输一个 test 接收方的用户名,然后我们的消息内容啊,它会告诉我们,让我们发送这个消息内容,我们就随便发一个, 发送之后啊,它就会显示在这里了,这就是我们的聊天记录啊,聊天记录啊,它就包含什么,有这个时间戳,然后有这个我们当前的用户,还有我们给谁发的这个用户,还有一些这个这个我们发的这个消息的文本内容,它有这些内容啊,这个聊天记录, 这个聊天记录它有一个特点是什么呢?就是只有只有你发给别人的,还有别人发给你的这个聊天记录,你是能看到的,如果没有别人没有给你发,然后你也没有给别人发,这两个用户中没有你当前登录的用户,我们可以看一下,我们先先注册一个用户啊,我们注册的用户叫 test 零一啊, 注册之后呢,我们再登录这个 test 零一的账户, 我们会发现这个聊天记录里并没有刚才我们发的那条信息,是吧?因为我们接收的人和发送的人都不是我们当前的这个用户,所以说它就没有这个聊天记录啊,看不到这个聊天记录。但是如果我们注册一个刚才我们那个 test 用户的话,就是能看到的。 注册成功之后,我们再进行一个登录啊,刚才他就发给了 text 那 个用户,我们登录进去就能看到这个 admin 发给发给我们这个聊天记录啊,就是这样的一个逻辑,让我们回到我们的演示中啊。 这个项目有几个比较特殊的地方,它是用文件存储的信息,然后有一个图形化界面,我们用户可以进行一个正常的招呼。 项目的背景和意义我们来看一下,为什么我们今天要学习这个项目呢?因为之前它是一个命令行版本的,我们对它进行一个修改之后,给它加上了 gi 啊,我们这节课就学习一个 gi, 有 跟 gi 有 关系的这个跟 gi 有 关系的这个项目。 我们这个项目逻辑其实已经非常接近这个真实业务工作中的一个项目逻辑了,只不过真实业务中它遇到的权限管理和文件存储一些方向可能更复杂一些,更复杂一些。我们以小见大,根据学习完这个项目之后,我们就可以理解真实业务环境中的一个开叉了, 我们出现的常见问题就是只会写这个命令行程序啊,只会写命令行程序,今天我们就要写一个真正有图形化界面的一个软件,然后我们可能会缺乏一些这个项目经验, 我们初学者可能会比较缺乏这个项目经验,因为我们学的东西是非常的多了,是吧?我们学了这个列表啊,学了这个字典,学了很多这个关于拍摄的知识点啊,但是我们没有一个项目能把我们这个知识点完整给他组合起来写一个完整的程序啊,对这个程序的架构没有概念,所以说我们就写一个这样的程序,提升一下我们对这个程序架构的一个能力。 我们这个程序他有几个结构,他是你看我们这个代码,他是有非常多的这个结构的,像我们注册是一个代码,保存这个聊天记录是一个模块, 获取这个聊天记录也是一个模块,重新画它又是一个模块,它是有比较多的模块,我们把它给独立给出来,然后最后再把它组合在一起啊,哪个模块出问题了,我们就去修哪个,这个叫做降低代码优化度,也是我之前经常提到的模块化编程的这个思想。 还有这个数据存储也是我们这个项目的核心啊,我们这节课用的是文本文件对它进行一个存储啊,你看这里是吧? 它是用两个文件对它进行一个存储的,看我们的这个用户是在这里是吧?这个用户和密码,还有我们的这个聊天记录,它是用文件存储的,我们真实的业务开发中啊,是用数据库存储的,为了便于学习啊,我们这节课就先用文件进行一个存储, 后期如果你们感兴趣的话,我们可以也可以出一个通过这个,通过这个数据库啊,存储我们的这个用户信息和聊天记录, 还有这个用户交互逻辑啊,因为我们是有这个 g u i 的,是吧?所以说需要一个交互逻辑,还有一些我们那个权限控制和聊天记录控制的一个逻辑啊,要有这个按钮、输入框、消息提示这些交互元素的一个实现的原理啊。 你再往下看,这个项目主要就分为这几个功能,第一个就是用户注册,还有用户登录,还有这个发送信息查看记录,还有退出公退出登录,也就这几个功能呢,它每一个功能都是一个模块,我们都要写一个函数,对它进行一个处理调用。 通过一个比较简洁的教程,让我们理解这个程序的架构。这节课它这个项目有几个特点,就是它是零数据库依赖的,不需要我们安装数据库, 我们先用文件存储进行一个代替,不需要数据库,然后它可以同时有多个用户,因为我们后面它这个聊天记录肯定是有多个用户的,是吧?肯定不是你一个人在聊啊,还有对于我们学习起来比较就好了,它的代码比较简洁啊,一共一百行,两百行不到的代码,就可以让我们获得一个这样逻辑清晰有记录安的这个项目, 这个聊天记录是这个聊天是这个聊天系统啊,是比较简洁的,那说到这个,说到这个项目了,我们要说到这个项目功能了,说完这个项目功能了,我们要看一下这个系统的整体结构设计啊,它需要有这个这个层啊, 一个是给我们看的叫做表现层啊,就是我们用户这个登录注册,还有这个聊天记录显示的一个表现层啊, 这是我们用户看到的层。还有这个聊天记录模块,他是在后面处理的,叫做业务逻辑层。业务逻辑层,我们这个项目他的业务逻辑就是什么?就是聊天嘛,就为了聊天嘛,做一个业务逻辑,他是系统的核心功能层,包含我们的逻辑处理,负责独立处理我们的用户认证、消息存储这些逻辑啊。 还有一个层就是什么呢? g u i 页面层,就负责和我们用户交互的,给我们用户看的就叫做那个 g u i 业务层了,就分为这几个层,我们整体结构要设计好啊,这几个层它都包含什么功能,要实现什么样的效果,我们要明确好我们的需求,再开始写我们的代码。 对于这个文件存储这个设计啊,我们要着重说一下,因为我们文件存储,它存储的是什么呢?有两个文件是吧?第一个是我们的用户文件啊,存储了我们的用户和他的密码是吧?存储我们的用户和他的密码,每行一个用户,简洁明了是吧? 存储了用户和密码,他用中间有逗号分割啊,我们这一刻他用的是这个铭文存储啊,在真实的业务环境中,这种操作是非常危险的,最好是用这个加密算法给它加密之后再存储到我们的数据库里面, 是用这种操作了,只不过这节课我们是先学习啊,先了解这个整体设计思维和架构,所以说不需要对它进行一个加密。还有就是我们的聊天记录,这个存储 聊天记录它这个文件里是怎么设计的呢?它是通过这个时间时间戳,然后发送者、接收者,还有这个消息内容,通过这个格式进行一个竖线分割的存储,包含完整的信息,包含这些内容,然后用竖线分割给他进行一个格式化,方便我们读写起来,读写起来比较方便,然后按时间顺序对他进行追加写入, 这是我们这些,这是我们这个设计的优点啊,比较简单直观,适合学习啊,调试起来也比较方便。这是我们这个文件存储系统的一个设计, 那这个用户管理模块它是怎么设计的呢?它主要用到的是这个这两个函数啊,一个是 load user 的 函数,就从我们这个 user 的 文件里面加载所有的这个用户信息到我们内存里面,然后我们有了这个,我们文件里面有了这个用户信息到我们内存里面,然后我们有了这个用户密码错误,这是我们 load user 的 函数,就其实就是我们注册的这个功能, 就把我们这个用户信息追加写到文件里面。注册的功能使用追加模式,一定要使用追加模式啊,追加之后注册新用户的时候,再用这个函数,我们就可以成功的登录了。 我们来简要介绍一下这个功能,就是从文件里面加载这个用户,加载之后呢,我们就可以判断这个文件名是否存在,如果存在的话,我们就验证一对密码,最后再登录成功。设计思想就是这样的,从文件里面读取我们的这个数据,最后把它转化成一个字典啊。设计思想就是这样的,从文件里面读取我们的这个程序,逻辑处理就比较方便,比较的这个架构比较明显。 说完了这个用户模块啊,我们再说一下这个聊天模块它是怎么样实现的,怎么样设计的聊天模块呢?它是包含什么?包含一个 save message 和一个 get user message 聊天嘛?肯定是跟 message 有 关的是吧?这个 save message 就是 把我们聊天的信息写入文件,然后方便我们进行一个查询啊, 实现流程就这样了,获取我们这个当前时间,做一个时间戳,然后再按照指定格式拼接之后我们就可以进行一个查询了,方便我们其他的进行一个作用。发送信息消息的时候,我们再写入这个文件, 然后主要说的就是这个 get user message 啊,这个它的功能是干嘛的?就是读取并过滤与当前用户相关的聊天记录,如果不相关的话,它是不会给你演,不会给你展示出来的。就是如果你不是发送者也不是接收者,那你就看不到这个聊天记录,是不是很合理,对吧?如果你不是发送者也不是接收者,你就看不到这个聊天记录,这个就是这个函数的作用啊, 只给你展示跟你有关系的这个聊天记录,它主要就是用,主要是怎么实现的呢?就是读取这个 type, 这个文件的内容啊,按照这个出现分割,然后解析每个字段,最后判断你是不是发送者,或者是不是接收者,如果是的话再给你展示,不是的话不给你展示,之前是相关的记录。 好的,关于这几个模块,我们设计思路就给大家讲明白了,再看一下我为什么要用这个图形化界面。 u i 这个腾讯号界面 ui 它有几个优势,就是它是拍摄内置库,而且它是跨平台的,而且有 ui 啊,我们用户学起来是比较的,我们用户使用起来是比较方便的,如果用命令行的话,它会有不直观的这个不直观的这个缺点,而且用户体验比较差,而且不像我们真正的软件,真正的软件是一定要有这个 ui 的, 用户用用户界面了, 它这个模块就提供了一些按钮,提供了文本框和弹窗给我们使用啊,在我们刚才都给大家看到了,它有一个文本框,有一个弹窗,是吧? 它的整体设计结构是怎样的呢?就主要有一个 t k 的 函数啊,这个函数是主窗口啊,所有界面的容器啊,就所有的容器它都放在这个主窗口里面了,它所有的主键就过来在这里啊,它有一个方法给它设定这个窗口大小,还有事件的循环啊, 还有一个标签,什么是文本标签啊?它用来显示标题的,用来显示标题的,可以看一下它这个语法显示标题,然后给它规定这个字体和大小,然后还有它的位置啊, 它这个是不需要我们进行编辑的纯展示啊。还有这个 button, 也就是我们的按钮啊,因为我们登录它是注册,它都是有按钮的,是吧?我们点了之后它才会发这个参数,然后我们才实现这个功能啊。最后有一个区域就是聊天显示区啊,把我们动画原本给展示在这里啊,可以设置为滚动模式,滚动查看。 嗯,设计方法就是通过这个菜的 app 这个类啊,我们新建一个类面向对象的设计方式啊,用类封装我们的界面和逻辑啊,封装起来之后再用类管理我们应用的状态和界面,通过方法再切换它是聊天还是登录,用代码逻辑结构比较清晰,方便我们维护 它。这个界面功能都有什么呢?我们来看一下,有界面标题吧,有这个登录按钮是吧?还有这个注册的按钮,分享方式就用这些这些实现了,它就是我们的这个这个模块自带的在这里这两个 这个是干嘛呢?就是让它提示一个输入框,我们输入进去这个 message box, 它是干嘛呢?就是提示啊,就弹窗,比如说我们这个注册失败啊,它会给我们一个弹窗啊,注册成功,然后密码错误,它给我们弹窗,就用这个模块处理的。 然后聊天的界面啊,它是怎么样设计的?有什么东西都有一个当前用户展示是吧?然后有一个聊天记录的文本框显示出来,最后有一个发送按钮,还有刷新刷新记录的这个按钮啊, 就聊天界面它就有这几个功能啊,有这几个 g u i 模块。最后逻辑就是这样的,通过一些函数我们对它进行一个处理啊,这是跟我们后面后端进行一个处理的用户体验设计要遵守一个什么样的,什么样一个这个遵守一个什么样的一个规则呢?就是我们界面布局要清晰啊,功能分区要明确, 因为这个是要给我们用户用的,是吧?所以说这个功能用户功能分区一定要明确了,因为我们用户他是不知道我们这个设计思路的,我们要带入用户的这个想法,我们再进行一个设计,要符合使用习惯,是吧? 我们把我们这个 g u i 啊和这个业务逻辑给它结合起来,就成了我们这个功能。比如说我点这个按钮啊,你要去成功给我弹出一个什么框,然后我们再进行一个获取,进行一个处理,是吧?功能要独立成一个函数,这样就是一个设计思路啊,可以看一下 程序的流程,就是这样的,启动之后注册再进入这个界面发送,然后再退出,就有这些功能,数据的流转就是通过我们文件处理的,可以看一下。 最后我们可以对这个项目进行一些拓展啊,这个拓展是我要着重讲到了,因为我们这个这个模块,它是一个很好这个项目,它是一个很不错的项目,它后面可以加很多新的功能,我们可以看一下。第一个就是我们群聊的功能,群聊的功能我们可以创建一个群聊房间嘛, 可以后面给他加入。还有什么一个拓展方向呢?就是消息可以按时间进行一个排序啊,按时间排序最后添加表情包功能啊,那我们可以发送表情,发送图片,然后还有一个 socket 网络聊天啊,就是我们用 socket 编程实现一个真正的网络通信,在不同电脑之间我们可以进行一个聊天,我们这个才只是在本地进行一个处理的,并没有通过网络聊天, 这就是比较高级的一个拓展方向了,可以学习一下 tcp 和 ip 这些通信,还有一些客户端和服务端的架构啊, 学习一些这些知识我们就可以进行一个拓展了。还有就是我刚一直提到的数据库代替我们文本文件啊,我们现在用的是一个文本文件存储的我们的信息啊,后面我们可以用数据库来进行一个存储啊,数据库写起来要比这个麻烦一点,但是啊它要更安全啊,更安全一点,因为我们数据库它是比较持久化的吗?持久化存储的,而且它是更安全的。 像我们的大名鼎鼎的微信啊,它用的就是 circle light 这个数据库啊,所以说我们的这个数据还有文件的传输啊,后面我们可以拓展一下如何发送接收文件,还有这文件跟文件有关系的话,我们就要加一些新的 ui 啊,比如说这个传输的进度条,读写的操作啊,还有这个选择对话框就比较复杂了,可以对它进行一个拓展, 这些拓展方向如果你会哪个,你就可以给它加上去,涉及到一些新的知识点, 如果你能做下来的话,证明你的拍的水平已经非常的不错了。这些功能总结一下,我们这节课都有什么,都有什么收获。第一就是我们理解了这个 g o i 的 这个程序的结构,掌握我们 tina 的 这个事件驱动模型啊,理解窗口组建布局的这个概念,从命令行走向这个图形化界面,开发出我们友好的这个桌面应用, 这是我们 g o i 程序的结构,和我们之前命令行的不太一样。还有就是掌握我们文件存储这个数据的一个结构, 我们学会如何维码文件,或者说后面我们学,我们学更多拓展一下,我们用这个数据库实际的话存储我们的用户信息,聊天记录,英姐他是怎么样读写的?在实际操作中啊, 理解他的设计架构,然后最后我们要学会这个模块化的设计啊,因为我们这个程序它有非常多的模块,用户管理、聊天功能它都是不同的模块, 我们要把它结偶啊,结偶设计降低这个代码的偶合度是啥意思呢?就是每个功能你单独拆出来写一个函数,在后面你维护的时候,你知道哪里错了,是吧?这就叫做结偶啊, 也就是模块编程的意思,提升它的可维护性和可拓展性,最后我们再把这些模块给它组合起来,完成一个真正独立的应用啊, 这个就是我们软件开发思维啊,这是一个架构啊,虽然说我们这个,虽然说我们这个项目它这个结构是比较简单的,但是对你的主要我们学习它这个设计思路啊,它的设计思路是什么样的?和我们这是业务逻辑里面是比较一样的。 好的,我们的原理解释就到这里就结束了,现在我们带着大家手把手来写一下这个代码,然后它的每个部分都有什么用呢?我也会给大家解释到。