导语
愉快的周末又要结束了T_T,抓住周末的尾巴再来更新一波吧。利用Python自动玩"别再踩白块了"这个小游戏,让我们愉快地开始吧~
相关文件
关注微信公众号“Charles的皮卡丘”,公众号内回复‘AIPianoTiles’获取。
开发工具
Python版本:3.6.4
相关模块:
numpy模块;
cv2模块;
pyautogui模块;
pyscreenshot模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
先睹为快
首先,在浏览器中打开下面这个游戏链接:
http://www.4399.com/flash/154247_3.htm
游戏加载完毕后,选择该游戏的经典模式,游戏界面类似下图所示:
![e7b858e193d848c7e45b82e9bc5f3649.png](https://img-blog.csdnimg.cn/img_convert/e7b858e193d848c7e45b82e9bc5f3649.png)
在cmd窗口运行autoplay.py文件即可让python自动玩这个小游戏了~
由于游戏主界面的位置随电脑和浏览器的不同而不同,因此,若运行失败,请自行调整下图所示的bbox参数:
![e1a457f077385fbd3b1c16342495081b.png](https://img-blog.csdnimg.cn/img_convert/e1a457f077385fbd3b1c16342495081b.png)
4个数字分别代表游戏界面左上顶点x坐标,y坐标和右下顶点x坐标,y坐标。
视频演示如下:
原理简介
游戏规则:
![0e97c4593de91676ea95d2c4e9ebb00b.png](https://img-blog.csdnimg.cn/img_convert/0e97c4593de91676ea95d2c4e9ebb00b.png)
原理介绍:
原理其实挺简单的,主循环的代码如下图所示:
![163027c09e1262a5dc84bb5caba78275.png](https://img-blog.csdnimg.cn/img_convert/163027c09e1262a5dc84bb5caba78275.png)
首先是截取游戏界面:
![fed45c3b0a97bb34df8b6911dbe2f40c.png](https://img-blog.csdnimg.cn/img_convert/fed45c3b0a97bb34df8b6911dbe2f40c.png)
二值化游戏界面:
![2df81c7f093daa7a1bbe4883082338d1.png](https://img-blog.csdnimg.cn/img_convert/2df81c7f093daa7a1bbe4883082338d1.png)
形态学处理:
![f6c69c0a42a4551a0ac8d47e2fe8084e.png](https://img-blog.csdnimg.cn/img_convert/f6c69c0a42a4551a0ac8d47e2fe8084e.png)
实现轮廓检测:
![0d5c2ebea713d45db48331bf5f5f39ac.png](https://img-blog.csdnimg.cn/img_convert/0d5c2ebea713d45db48331bf5f5f39ac.png)
利用pyautogui模块模拟点击检测到的黑块就可以实现自动玩这个游戏了。还是挺简单的,完整源代码实现详见相关文件~
更多
代码截止2018-10-14测试无误。
注意,运行代码时cmd窗口不要挡住游戏界面~
○
○
![08732f4500a3fbfaacf0e3b0f0fb1c80.png](https://img-blog.csdnimg.cn/img_convert/08732f4500a3fbfaacf0e3b0f0fb1c80.png)
Charles的皮卡丘
Pikachu~