大家好,这里是为代码封神的封神榜(有点吹牛皮了,哈哈)。还是新人初来乍到,希望大家多多指教。
——————————————————
不知道兄弟们有没有遇到这样的情况,当你正在玩王者的时候,战局焦灼。结果这时候心仪已久的女神(之一)发来一条消息,问我有时间一起看电影吗?
我这暴脾气,这怎么能忍!
当场我就要夺门而出了,可是想到我也不能辜负一直陪我战斗的兄弟们啊。正纠结之时,瞥见了室友写了一半的Python作业,瞬间心生一计。
干脆自己写一个替我打王者荣耀的是AI算了,这样游戏女神两不误。
那接下来看我操作吧!
该项目包括训练数据收集、数据处理、模型训练和模型应用完整开发流程。
该项目用后裔的100多局对战数据训练了一个模型作为演示,大家学会以后可以自己收集数据,训练自己的AI英雄。
接下来我们就来拆解下这个项目,我讲解项目的原则一贯是简洁、通俗,尽量做到小白也能看懂。
先来考虑下大致的实现思路,看到这个项目的第一眼我是比较懵的,完全不知道怎么搞。其实换个角度,想想我们玩游戏的过程,或许就能找到一些思路。
我们玩游戏的时候,大脑会根据当前的游戏画面来判断该进行什么样操作。游戏画面其实就是一张图片,如果把图片和图片对应的操作输入到算法模型,让算法自己去学习图片与操作之间的关系。当给出新的图片,如果算法能正确输出对应的操作,那我们就可以在游戏开始后,把游戏画面不断输入到算法模型中,算法模型不断产生对应操作并执行,这样便实现了程序自动玩游戏的功能。
所以,我们就把AI玩游戏的问题抽象成了计算机视觉(cv)的问题。那么要解决的核心问题有两个,第一,图片和图片的操作怎么收集,第二,用什么算法模型。
在后面的讲解中会解决这两个问题。
01 收集训练数据
收集训练数据就是我们在玩游戏的时候把游戏画面以及操作记录下来。
获取游戏画面
首先需要在 Windows 电脑上安装 scrcpy,它能将安卓手机投射到电脑,这样我们就可以在电脑上截取游戏画面了。
代码很简单,调用了“取图”函数,“窗口名称”参数是运行 scrcpy 的窗口名称。该函数会调用系统能力将当前窗口画面保存为图片
这个项目还有一大特点是变量名和函数名大量地使用中文名定义,虽然 Python3 支持这样做,但很少见,个人觉得英文名更好。
获取图片对应的操作
我们没办法直接获取手机上的触控事件和手势,只能通过电脑来中转,将手机上的操作转换为电脑上的键盘操作,比如:手机的上下左右移动,转为按键’w’、‘a’、‘s’、‘d’。
<