如何用Python写一个贪吃蛇?
作者:Hawstein 
http://hawstein.com/2013/04/15/snake-ai/
前言
语言选择
  最初版本
    
     
      
       
         
          1
          
2
          
           
       
         
          在一个矩形中,每一时刻有一个食物,贪吃蛇要在不撞到自己的条件下,
          
找到一条路(未必要最优),然后沿着这条路运行,去享用它的美食
          
           
       
     
    
  BFS
DFS
A*
BFS+Wander
    
     
      
       
         
          1
          
2
          
3
          
4
          
5
          
           
       
         
          while 没有按下ESC键:
          
	if 蛇与食物间有路径:
          
		走起,吃食物去
          
	else:
          
		Wander一段时间
          
           
       
     
    
  高瞻远瞩版本
蛇和食物间有路径直接就去吃,不可取。那该怎么办?
如果蛇去吃食物后,布局是安全的,是否就直接去吃?(这样最优吗?)
怎样定义布局是否安全?
蛇和食物之间如果没有路径,怎么办?
最短路径是否最优?(这个明显不是了)
那么,如果布局安全的情况下,最短路径是否最优?
除了最短路径,我们还可以怎么走?S形?最长?
怎么应对蛇身越来越长这个问题?
食物是随机出现的,有没可能出现无解的布局?
暴力法(brute force)能否得到最优序列?(让贪吃蛇尽可能地多吃食物)
    
     
      
       
         
          1
          
2
          
3
          
4
          
5
          
6
          
7
          
           
       
         
          # # # # # # #
          
# 0 1 2 3 4 #
          
# 1 2 3 # 5 #
          
# 2 3 4 - 6 #
          
# 3 + * * 7 #
          
# 4 5 6 7 8 #
          
# # # # # # #
          
           
       
     
    
  
    
     
      
       
         
          1
          
2
          
           
       
         
          1. 目标是食物时,走最短路径
          
2. 目标是蛇尾时,走最长路径
          
           
       
     
    
  
    
     
      
       
         
          1
          
2
          
3
          
4
          
5
          
6
          
7
          
           
       
         
          # # # # # # #
          
# * * * * * #
          
# * * - 0 * #
          
# * * # + * #
          
# * * * * * #
          
# * * * * * #
          
# # # # # # #
          
           
       
     
    
  
    
     
      
       
         
          1
          
2
          
3
          
4
          
5
          
6
          
7
          
           
       
         
          # # # # # # #
          
# * * * * * #
          
# * * - + * #
          
# * * # * * #
          
# * * * * * #
          
# * * * * * #
          
# # # # # # #
          
           
       
     
    
  
    
     
      
       
         
          1
          
           
       
         
          convert output.gif -fuzz 10% -layers Optimize optimised.gif
          
           
       
     
    
  Last but not least
  推荐阅读 关于 Python 3.9,那些你不知道的事 
总结了 90 条写 Python 程序的建议 
关注「Python 知识大全」,做全栈开发工程师 岁月有你 惜惜相处 
评论
