贪吃蛇游戏

2019/01/26
这里说的不是怎么去玩游戏,而是对游戏的分析内容,原来的时候,我就分析过那个类似俄罗斯的魔法旗袍的游戏。说实话,那个时候的分析太浅显了,而且有点不对的感觉。最近是在分析强化学习和玩游戏的内容,还有一些是马里奥的内容,这不就巧了吗。


让我很吃惊的是,就在我看一篇利用强化学习来玩贪吃蛇的论文的内容[1],它针对贪吃蛇的定义就利用了图模型,如图1。不是说这种模型的定义就很牛逼,主要是说,在我进行分析的过程中,我的第一想法,并不是这样的。我可能是从机器自学习的角度,就没有从最原始的算法建模的过程中来进行思考。


图1 问题建模

图片内容是分析部分的数学描述部分。


所以啊,其实我最开始的分析角度并不是说不对,但是如果你利用算法的角度,利用经典的数据结构将这些内容给描述出来,不久少去了那个自己再构造特征的过程了嘛。这是一个方面,还有一个方面就是他提到的NP难问题,我应该怎样将这个问题的解决过程,跟一些搜索算法或者什么联合起来。乖乖,这个NP难问题吓到我了。我还是没想明白这个东西是怎么跟这个NP难联系起来的。
相对来说,贪吃蛇的状态空间不是很简单嘛,特别是按照规则的方法,每次的实现不就是一个规则嘛,为毛这么难咯。


2019/01/27
在文章[2]中,看到了一些内容比较新,感觉这些内容就是我平时不思考的结果。BFS、DFS这种搜索算法,我一开始的确想不出来这种东西是怎么应用到游戏中的。而且后面拿这个算法分析的时候,也感觉不对劲,就是他的动图部分感觉不是BFS这种,然后仔细想想才明白,他每次的动作应该是已经找到最优解了。跟我原来的时候在那个课程上看到不太一样。
把文章看完就明白了一些,他的这种做法,跟看的论文是不一样的,他是针对问题进行分析,得出可行方案,尽可能将一些状态列举出来。然后进行相应的算法设计,跟强化学习明显不是一个套路,就是那种他的动作都是决定性的,都是开发人员已经设定好的代码,并不是学习出来的。就是按照算法与数据结构里面的步骤,先对问题建模,然后设计相应的步骤来完成一定的内容。
这也是我想的那种,类似按照规则形式的进行游戏。

这里找了几份源码,一份就是利用curses进行编程的,一份是利用搜索算法实现自动完成游戏的。

2019/02/07
这里有一份源码是利用pygame实现的贪吃蛇,并且是两个蛇一起追的。

参考文献

[1]B. Ma, M. Tang, and J. Zhang, “Exploration of Reinforcement Learning to SNAKE,” p. 5.
[2]Hawstein,如何用Python写一个贪吃蛇AI
[3]python实现贪吃蛇
[4]贪吃蛇搜索算法
[5]利用Pygame实现贪吃蛇AI

你可能感兴趣的:(贪吃蛇游戏)