Python制作AI且mini版飞机大战

2018-08-02 18:09:23 浏览数 (6906)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程>>戳此了解

导语

大家新年快乐呀~~~

T_T

大年三十终于偷得半日清闲想起来有些日子没更公众号了~~~

So,来更一波文章hhhhh~~~

之前貌似水了好几篇以Python能干嘛为主要目的的文章,那么就再来水一篇吧~~~

这篇文章的技术含量依旧不高,算是AI入门级的内容,idea源自于(T_T我也忘了)。。。

纯Python实现,不依赖于任何深度学习框架。。。

算了,直接进入正题吧!


相关文件

百度网盘链接: https://pan.baidu.com/s/1UIV51eSD3ixqAuVqRC7z8g

密码: fmtv


参考文献

(1)neuro-evolution

https://en.wikipedia.org/wiki/Neuroevolution


主要思路

游戏思路:

让我方飞机自动躲避屏幕上方飞来的敌机。

实现方式:

(1)利用简单的神经网络来决定飞机的行动方式;

(2)利用neuro-evolution算法来提高神经网络的性能,该算法核心类似于达尔文的进化论,随机生成种群后选择优秀个体进行杂交变异获得新的种群,如此反复循环。

具体思路和实现方式详见源代码。


开发工具

Python版本:3.5.4

相关模块:

win_unicode_console模块、pygame模块以及一些Python自带的模块。


环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。


使用演示

在cmd窗口运行main.py文件即可:

若效果不佳,请自行修改NeuroEvolution.py文件中相关参数,如下图所示:

当然你也可以修改main.py文件中敌机的生成位置:

飞机最后会在不生成敌机的位置区域运动:


更多

算法真的真的写的很简陋且丑。。。

So,

没有任何实际使用价值。。。

有兴趣的小伙伴可以进一步优化和扩展这个AI游戏,当然也欢迎后台留言交流。。。

可优化的内容举例:

(1)优化新基因的生成方式;

(2)相关参数随着进化过程不断改变等。