V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DavidNineRoc
V2EX  ›  问与答

用 PHP 玩百万英雄游戏,哈哈!

  •  
  •   DavidNineRoc · 2018-01-20 17:54:54 +08:00 · 1188 次点击
    这是一个创建于 2288 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近朋友一直再玩百万这种直播猜题的游戏,网上也搜了很多项目,基本是python的天下了。 看网上的例子,说一下整体流程。

    adb 截图 --> 裁剪图片只剩下题目和选项 ---> 请求百度 aip 接口 ---> 返回的题目和选项文字 ---> 再去捉取百度百度或者百度相关 && 问题+选项捉取匹配数 ---> 输出帮助
    

    自己撸了一个 PHP 版本的,现在有几个问题比较明显要解决的。大伙有什么想法给我建议 :satisfied:,有空的大神一起写代码,哈哈。 说一下问题,现在程序运行一次平均需要 6s 左右( gif 图中显示 9s 多)是因为我在录视频,加上渣电脑,硬盘读写慢。 这 6s 的时间分配大概是这样的。

    • 有将近 3s 左右的时间浪费在了截图,(可能是我电脑渣,每台电脑可能都不一样)
    shell_exec("adb shell screencap -p /cache/screen.png");
    shell_exec("adb pull {$this->tmpFile} {$this->cacheFile}");
    

    这里是先截图保存在手机的缓存文件,然后在pull回电脑,这两个操作极为消耗时间。 (网上有一步操作的,

    adb shell screencap -p screen.png
    // 或者
    adb shell screencap -p > screen.png
    

    我没用的原因是因为我电脑显示这个,(!不能再吐槽我的电脑了) file 其实我的想法是直接这样的:直接获取二进制输出,然后去请求图片识字接口,这样少了 io 操作,也许会更快。但是还是出现图片的那个错误,待各位大神帮忙验证。是不是我这的问题

    // 获取二进制输出留
    $output = shell_exec("adb shell screencap -n");
    // do something
    

    还有另一个比较吃时间的操作是在请求百度问题,三个相关匹配+一个问题匹配,这个也需要优化。


    最后上项目地址,在努力改代码中!!!有兴趣的朋友一起coding DavidNineRoc/million-hero

    adb 环境

    • gif 图显示时间这么久的原因是开着录屏,电脑卡顿,硬盘读写只有 350k/s 速度
      • 执行php test有可能出现的情况
    • adb 环境目录未添加
    • 手机未连接
      • 手机拔出 USB 重新连接,开启调试模式
      • 模拟器的话重启

    adb 环境

    • 成功 adb 环境
    • php artisan如果执行失败,请Issure
      adb 环境
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3867 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:17 · PVG 18:17 · LAX 03:17 · JFK 06:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.