美文网首页
Python:从FGO中解放双手

Python:从FGO中解放双手

作者: Meowcolm024 | 来源:发表于2018-10-29 11:52 被阅读0次
图片来自p站

前言

我还是来讲一下写一个完整的FGO脚本的思路吧QWQ,具体代码的实现就不说了,直接到GitHub上面看代码就是了。
不过前期的准备还是讲一下吧owo,主要用到ADB对手机进行操作,Python的话需要cv2(opencv-python),PIL(pillow),pytesseract和numpy这几个库。剩下的话就是怎么写的问题了。

界面识别

只要肝过FGO再分析一下基本上可以把FGO的界面分成3类:

  1. 一般的界面,像是按“下一步”,选择关卡什么的。
  2. 战斗的界面,也就是选择指令卡的界面。
  3. 结束的界面,就是“点击屏幕继续”的界面。

呃不过还有像是选择助战之类的就另当别论了。

这个其实很简单,使用OpenCV库里面的matchTemplate()函数识别出按钮的位置并点按就可以了。而结束界面和选择助战的界面其实只要随便在其上面点按即可,基本没有什么难度。这里也不再多作赘述,因为最主要的指令卡的选择。

核心算法

这一part主要讲述指令卡的识别和选择。

指令卡识别

首先我们要做的其实是识别5张指令卡的种类(Quick Arts Buster)和状态(克制 抵抗)。这个和前面的界面识别其实也差不多,但做法稍微有些不同。我们需要把界面切割成五份,刚好把每张指令卡给截出来,然后便可把每张卡的种类状态和坐标给识别出来并记录下来(也就是要有一个class 是关于 order cards的),然后这些数据后面会用到。

从者的识别

这一个part就比较tricky了,因为我们没办法把所有的从者的头像给爬下来,所以我们要用另外的方法。想法便是从指令卡上截取从者的头像并保存下来,然后我们会遇到以下情况:

  1. 截下时刚好包括了三个从者,这样我们之后就不需要再截从者的头像了。
  2. 截下时未满三个,这样的话我们之后还要还要再截取新的从者的头像。

这样之后我们再帮每张卡标记上从者就可以了,另外如果同一从者的卡片对于三张则给它们一个标记(给后面Brave Chain的识别用)。
从者的识别还有另外的用处,那就是给后面宝具卡的识别使用XD

如果感兴趣的话。。。
识别流程
简书没有流程图orz,这里详细讲一下识别流程

  1. 把裁剪出来的每张指令卡中的从者头像裁剪出来(相当于会输出五张图,里面会有相同的从者,图片的名字和截出来指令卡的名字相对应)
  2. 将从者的头像与其他的指令卡匹配,如果是同一从者这删去多余的该从者,若不同则保留。最后会剩下1-3张从者头像
  3. 将剩余的从者头像另外保存为从者模板(template)
  4. 在以后的识别了,优先识别模板里的从者,若界面有出现除模板从者以外的从者则将该从者的头像截下并保存为模板
  5. 循环XD,然后在每次开脚本时清除就好了

伤害计算

还是这张表

因为我们之前给每张卡都标记过了种类,状态,从者所以我们只需要依据这张表把我们的数据和这张表格匹配就好了OWO

可以知道对伤害主要影响的因素是卡的种类出牌顺序,和Extra Attack卡,至于具体的实现。。。感觉说起来挺绕的,可能看代码更直接一点QAQ

宝具识别

感觉宝具的识别是最麻烦的,我也只是最近才写了出来,后面的代码真的是越写越乱QAQ,但也不妨说一下。

首先我们要识别到宝具卡,因为我们之前已经有识别从者并且将其截下了,所以并没有什么大问题。

真正有问题的是何时放宝具orz,我个人想法是用tesseract识别回合数并在最后一回合放宝具,当然,每个人的想法不尽相同,这个就自己决定吧OWO

磕苹果

这里来讲一下磕苹果的问题,其实我们并不需要识别剩余体力(这样太麻烦了QAQ),所以我的想法是当点击关卡是出现体力不足的时候自动磕苹果,然后自己可以设定磕到苹果的数量就可以了OWO

附1:使用教程(中文版)

  1. 安装ADBTesseractPython(推荐用Homebrew安装adb和tesseract)
  2. 通过pip安装opencv-pythonpytesseractpillownumpy
  3. 将Android手机(开启USB调试,屏幕分辨率要求1080p)连接电脑
  4. 按自己的需求配置config.py文件
  5. 运行脚本

附2:源码等

其实前面已经放过一次了,这里再放一次OWO:GitHub
至于还有什么。。。到时候再补充吧OWO

相关文章

  • Python:从FGO中解放双手

    前言 我还是来讲一下写一个完整的FGO脚本的思路吧QWQ,具体代码的实现就不说了,直接到GitHub上面看代码就是...

  • 从极简生活中解放双手

    嗨,我是您的朋友,清风朗月读书正好。 最近我读了一本非常有意思的书,《一家人的极简生活》。我们知道日本人的整理收纳...

  • 解放双手

    我发现,地铁不拥挤的时候喜欢不去扶扶手的人,和地铁挤满的时候依然不扶扶手的人是一群人。 不拥挤的时候不扶扶...

  • 解放双手

    这两天,一直很心烦,又要上公开课又要知识大比武,弄得我有些焦虑。怕两头都做不好。 发现自己有时候真的...

  • 解放双手

    今天的主题是:解放双手。 解放双手:就是人类开始自立行走。人类开始直立行走后,释放了双手,人类就可以用双手来劳动,...

  • 解放双手

    坐在副驾的我,被暖暖的太阳照着,眯起眼睛听着音乐,今天,"我终于实现了解放双手的自由!"心中暗在窃喜中,偷偷瞥了眼...

  • 解放双手吧。

    现在这年代是互联网科技很发达的年代,每天你可以在街上、餐厅里、奶茶店等等......每个人都是手里拿着一台机器——...

  • 解放双手啦

    哎呀,老公的嫂子回来了 我就又可以自由了,有她带着宝宝我就可以睡到自然醒,每天心情都是美美哒,哈哈。想想明天又可以...

  • 解放双手啦

    年前购买的手机支架今天收到了。 打开快递,发现,手机架包装精美,沉甸甸的,心想一定不会失望。 黑色的支架,可升降,...

  • 双11用Python喂猫解放双手

    前言 最近双11来临,淘宝开启了喵喵活动,但是想到要打开这么多任务去浏览,肯定花不少时间,于是乎,就写了一个Pyt...

网友评论

      本文标题:Python:从FGO中解放双手

      本文链接:https://www.haomeiwen.com/subject/yuxmtqtx.html