swy-bot icon indicating copy to clipboard operation
swy-bot copied to clipboard

(长期支持) 食物语·陪伴版自动挂机脚本, 支持 Android 直接运行, 无需电脑 ADB

swy-bot

swy-bot

简介

食物语自动挂机脚本, 主要用于客潮和活动小游戏(目前仅包括千人千面自动消除)

由于某些原因小游戏自动挂机仅提供算法, 不提供配置, 请在tasks/minigame.py中自行修改配置

目前已支持Android系统原生运行脚本, 但有一些性能问题, 详情请见android分支, 若想体验可到releases中下载

现已加入食物语线性规划做菜计算器, 但处于早期测试阶段, 如遇bug请提交issue

祝各位少主都能把喜欢的菜男人抱回家! 双御.png


食用方式

详见程序内指引

注意: 若使用ADB和Scrcpy模式, 请确保系统环境变量中有ADB, 并且ADB已连接至手机


食材

必需依赖:

  • Python 3.8+
  • numpy
  • opencv-python

平台特定(现已引入动态加载模式, 未安装库仅会禁用对应模式, 脚本仍可正常运行):

  • Windows原生模式:
    • pywin32
  • linux和mac原生模式:
    • PyAutoGUI
  • 任意系统ADB模式:
    • pure-python-adb
  • 任意系统Scrcpy模式:
    • av

线性规划做菜计算器:

  • PuLP

菜谱&改良

本项目可在Windows, Linux, MacOS和Android系统上运行, Android系统需要专用的用于加载脚本的APP才能运行, 详见android分支

另外本挂机脚本实际上提供了一个框架, 经过简单修改应该也能用于其他游戏, 甚至是用于训练人工智能玩游戏(逃

本项目欢迎各位空桑少主贡献代码

项目结构

  • libs/ 脚本所需的库, 目前只有Scrcpy的服务端
  • data/ 存储游戏数据和挂机所需资源的目录
  • saved/ 截图会保存在这个目录
  • algorithms/ 算法
    • detect.py 图像识别相关算法
    • matching.py 自动连连看算法(原作者TheThreeDog)
  • players/ 模式
    • player.py 模式基类
    • native.py 通过原生窗口与游戏交互
    • adb.py 通过ADB与游戏交互
    • scrcpy.py 通过Scrcpy与游戏交互
    • debug.py 调试用
  • tasks/ 挂机任务
    • task.py 挂机任务基类
    • kechao.py 客潮挂机任务
    • minigame.py 小游戏挂机任务
  • platforms/ 工具模块的平台相关实现
    • console.py 具有命令行的系统上的实现
    • windows.py Windows系统相关实现
    • linux.py Linux系统相关实现
    • android.py Android系统相关实现
  • main.py 主模块
  • profit.py 线性规划做菜计算器(可单独运行)
  • swy.py 食物语游戏数据(单独运行为输出游戏数据)
  • scrcpy.py Python实现的Scrcpy客户端
  • utils.py 工具模块

自动挂机

详见players和tasks目录

线性规划做菜计算器

线性规划算法详见profit.py中的注释

关于烹饪时间缩短百分比

根据计算, 菜本身的缩减和食魂的生活技能提供的缩减是相加的关系

但源于我的疏忽, 脚本中的算法是相乘, 但是结果没差太多, 所以不改了(~~真不是懒~~)

另外烹饪时间出现小数的话只有入没有舍, 是ceil

自动小游戏

由于某些原因, 本项目仅提供用于学习的算法, 不包含配置, 如需使用请自行配置


如何烹饪

  1. 拿走菜谱(克隆仓库到本地)
  2. 准备好食材(安装第三方库)
  3. 开始做菜(运行main.py)
  4. 装盘(目前仍无法打包运行, 请考虑使用Android原生版本)
  5. 随心所欲地修改菜谱(请随意修改代码)

烹饪日记

展开查看
2020/10/27 项目开始开发
2020/11/3 实现ADB模式
2020/11/5 实现Windows原生模式
2020/12/5 客潮挂机从模板匹配改为识别圆
2021/2/1 大规模重构代码, 增加挂机任务类, 增加使用Scrcpy的模式(未完成), 更新版本号至V1.2
2021/2/21 使用装饰器注册挂机任务, 完成Scrcpy模式, 更新版本号至V1.3
2021/2/23 重做客潮挂机任务, 更新版本号至V1.4
2021/2/25 新增swy.py用于加载游戏数据, 初步实现线性规划做菜计算器
2021/2/26 更新菜肴数据为计算缩减后的烹饪时间, 更新版本号至V1.5
2021/9/13 加入自动连连看算法, 初步支持Linux
2021/9/14 已加入对Linux和MacOS的支持, 但尚未测试, 更新版本号至V1.6
2021/9/17 已加入千人千面自动挂机功能, 更新版本号至V1.7
2023/2/2 代码重写, 用协程替代状态机, 实现动态加载模式, 移植到Android系统, 由于更新内容较多, 更新版本号为V2.0
2023/7/12 为适配Android12, 客潮截图现在保存在相册中, 而非Android/data, 更新版本号为V2.1
2023/9/8 更新Scrcpy至1.25, 修复Android版挂机脚本在鸿蒙系统上的一些问题, 更新版本号为V2.2
2023/9/9 适配Scrcpy 2.1.1, 更新版本号为V2.3

厨师们

详见 Contributors


特别致谢

所有第三方库的开发者

Scrcpy功能参考自:

线性规划做菜计算器参考自:

自动连连看算法来自:

感谢以上项目的开发者

以及这篇Python线性规划库PuLP教程: PuLP简介


版权信息

本项目以MIT协议开源, 引用的代码仍按照原协议开源

仅供学习交流, 严禁用于盈利

使用本脚本造成的一切后果由使用者自行承担