Coder Social home page Coder Social logo

pcrjjcanalyzer's Introduction

PCRJJCAnalyzer

前言

由于JJC和PJJC的奖励太好,虽然不大喜欢玩PVP但不得不打,好在有作业网的存在减少了很多精力消耗。然而实际操作过程中,尤其是在PJJC中,需要来来回回点很多次才能确定是否可以使用该作业,因此希望通过图像识别的方式再加上已经实装在HoshinoBot中的API查询方法做到自动查询,并在简单分析后指导应当如何选择阵容或者是否需要刷新列表。

简介

使用OpenCV所提供的matchTemplate功能,识别当前模拟器处于对战阵容选择画面时显示的对方阵容具体构成,然后调用公主连结Re: Dive Fan Club所提供的接口进行阵容查询,并按照结果指导操作,以减少玩家精力消耗。

使用流程(当前初版图形界面测试阶段)

  1. 程序可在Release中下载。另有onefile单文件版本,但启动速度会稍慢一些。
  2. 启动后请在程序右下方填入你的apiKey(在作业网公主连结Re: Dive Fan Club - Bot处申请,请确认你当前ip与作业网中登记的是相同的,否则请重置ip)
  3. 请根据标题在程序左下方选择你运行PCR的模拟器句柄。
  4. 游戏中进入对战阵容选择画面后(目前需要人工确认),点击识别求解按钮直接查询作业。
  5. 在对战履历界面,可以点击履历解第一队、履历解第二队和履历解第三队按钮查询相应的作业。
  6. 在队伍编成页面,可以点击查防守阵容按钮查询相应的作业。
  7. 识别查询时,会默认使用当前设定的算法给出的答案。目前每次查询都会分别使用六个算法进行识别。如果某个角色有识别错误,可以单独点击识别错误的角色的名字所在的复选框选择其他备选结果。
  8. 可以通过点击第一队、第二队、第三队按钮切换不同的查询,且每个队伍会分别记录最后一次查询。
  9. 可以通过点击单个作业旁的锁定此队伍按钮来锁定该作业。锁定后在其他队伍查询的结果中冲突的角色将会被标红(具体效果请观看演示视频4中打PJJC的示范)
  10. 可以通过点击单个作业旁的收藏阵容/排除阵容来标记收藏和排除的阵容,当查询到的结果中有被收藏/排除的作业,背景会被设置为浅绿/浅红色。

编译方法

  1. 创建适合的python环境(开发环境下为conda建立的python3.7虚拟环境)
  2. 使用pip install -r requirements.txt安装环境
  3. 使用pyinstaller .\main.spec以文件夹形式编译(启动速度更快)或使用pyinstaller .\main-onefile.spec以单文件形式编译(启动速度稍慢)

工作原理

  1. 程序对句柄对应窗口进行截图后,参照config中浏览器相关的边距参数进行裁剪,仅保留游戏画面
  2. 根据比例获取对面阵容的每个角色的头像,作为matchTemplate中的template
  3. 以每个角色的头像对照参考图片(refImage,来自于公主连结Re: Dive Fan Club)进行matchTemplate后,获得识别结果的坐标的中点
  4. 根据中点和config中的refImage相关数据,判断其行列坐标并输出

示例

开发计划

  1. 基于PyQt5的图形界面
    • 已初步完成
  2. 以行列坐标对照数据库,获得相应角色的名字和作业网对应id
    • 已完成
  3. 为JJC和PJJC提供不同的操作流程
    • 已完成
  4. 使用不同的算法并总结出最有把握的识别结果
    • 已初步完成,所有结果都可以待选
  5. 根据结果自动进行查询,并对查询结果简单分析,作出推荐
    • 已实现查询,但尚未尝试做查询结果分析
  6. 添加防守阵容自查功能
    • 已完成
  7. 用户配置文件储存apiKey,以及收藏/黑名单作业功能
    • 已完成

声明

  1. 此工具遵循相关开源协议,不可作商业用途。
  2. 此工具唯一访问游戏的方式是截图,绝不通过其他不正当方式获取游戏数据,绝不代替人对游戏进行任何操作,更不可能涉嫌篡改游戏程序代码等作弊行为。
  3. 本工具本体完全免费。如果喜欢本工具并想请repo主喝杯咖啡请看这里

Tips 爱发电主页(按月资助创作者)

开发日志

  1. 2020-08-15 - 目前发现refImage均为三星后立绘,若有使用二星立绘的角色会识别失败,需要添加旧立绘头像数据。
    • 已解决
  2. 2020-08-16 - 本来以为履历查一队用不上,但实际上还是挺好用的,下个版本会加上(希望能跟锁定阵容功能一起上)
    • 已先行完成,锁定阵容功能下个版本再上吧~
  3. 2020-08-16 - 少部分的角色识别结果还是容易出错,计划下次做成多个算法同时进行后取众数,以及提供各算法结果选择功能。 目前查询失败时还是容易崩溃,正在排查原因。
    • 3c802db 已解决。放弃使用众数的方法(意义不大)
  4. 2020-08-22 - 添加了三队储存功能
  5. 2020-09-02 - 添加了收藏作业与排除作业功能。至此完成原有设计所有功能。
  6. 2020-09-05 - 1. PR#9改写了截图业务逻辑,无需再使用Offset功能。 2. 添加了6星角色的数据。
  7. 2020-03-18 - 添加了OTA机制与日志显示模块,发布v0.2.1-beta1,短期内不会再出大版本。

pcrjjcanalyzer's People

Contributors

alive24 avatar wrfgup avatar kengxxiao avatar dependabot[bot] avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.