jerryxjr1220 发表于 2017-2-10 09:04:18

python小练习(074):简单游戏AI设计之六(带AI的贪食蛇)

接上一节的python小练习继续优化我们的贪食蛇AI程序。

上一节说到还有一个功能没有实现:当蛇头与食物和蛇尾之间都没有路径的时候,怎么办?还能怎么办,既然都没有路径,那当然只能挑能走的路,走一步看一步了呗。所以我们还需要设计一个函数来实现这个目标。

#当蛇头与食物和蛇尾之间都没有路径时,随便游走
def go_anywhere():
    global body,dire
    head = body
    for i in ddict:
      hx,hy = head+ddict,head+ddict
      if 0<=hx<Height and 0<=hy<Width and not in body:
            go =
            break
    dx,dy = go-head,go-head
    for i in ddict:
      if (dx,dy) == ddict:
            change_dire(i)
            break   

这样就好了么?还不是,还有一种情况也要考虑,即当食物出现在蛇身旁边1的位置的时候,去直接吃食物还是很危险的,因为吃了食物以后,蛇会长长,很有可能就会撞上自己。这时候就需要有个函数能判断是否食物出现在自己身边,如果是,就还是去追蛇尾,如果不是,才去吃食物。

#检查食物是否紧挨蛇身
def near_check():
    global food,body
    near = False
    for i in ddict:
      fx,fy = food+ddict,food+ddict
      if in body:
            near = True
    return near

这样基本上就完成了本次优化,当然优化后的蛇还做不到,如之前gif图片中的那条蛇那么智能,只是相比之前的AI有了大幅度的提高,而且食物的放置本身也有随机性,陷入死局也是时有发生的。

如果还想继续改进也还是有空间的,比如可以虚拟一条蛇去吃食物,看看吃晚食物是否还安全,如果安全就派真蛇去吃,不然就重新规划路径,这样还能再提升AI一个等级,如果有兴趣,这个优化就留给广大鱼油去做了。{:5_109:}

为了加速测试,我还写了一个打印函数,这样每次运行可以把结果输出到文本中,方便查看。当然你也可以关闭time.sleep(),关闭show(),只显示结果,例如:
Welcome to play Greedy Snake!
Your score: 3931
----------------------
|oooooooooooooo      |
|ooooooo      o      |
|oOooooo   @o      |
|ooooooo      o      |
| oooooo   oooo      |
| oo   ooooo       |
|      ooo       |
|      o   oo      |
|ooooooooo    o      |
|oooooooooooooo      |
----------------------

附上带注释的完整代码:
**** Hidden Message *****

jerryxjr1220 发表于 2017-2-10 20:49:08

有兴趣的鱼油可以把这个带AI的贪食蛇与我之前发的GUI版本的贪食蛇相结合,那样看起来更美观,相信这个也不难吧,留给大家自行发挥了{:5_109:}

余欲渔 发表于 2017-2-15 22:18:01

看下完整代码

...公子 发表于 2017-2-19 10:47:17

??有没有样式看下?

haojie99 发表于 2017-2-19 13:07:32

不错,学习了,谢谢~!~!!~

~风介~ 发表于 2017-2-27 10:29:39

膜拜大牛!{:10_256:}

该名字已被注册 发表于 2017-2-27 18:48:48

{:5_106:}

千山暮雪归人晚 发表于 2017-3-27 09:06:18

楼主太厉害了!

maizi 发表于 2017-3-27 10:55:20

感谢分享

ggshen 发表于 2017-4-14 11:47:23

2333333333333333333333

DDBarry 发表于 2017-4-18 00:51:00

贪吃蛇

wengchenxu 发表于 2017-5-18 23:33:53

学习觉悟

Eooming 发表于 2017-5-26 21:39:14

日常膜拜

smart007 发表于 2017-6-8 12:13:38

微观一波

lst50 发表于 2017-6-8 13:34:49

{:10_249:}{:10_249:}{:10_249:}{:10_249:}{:10_249:}{:10_249:}{:10_249:}

P先生 发表于 2017-6-26 09:49:26

yyf900524 发表于 2017-12-11 16:24:16

顶顶顶

jinfeng775 发表于 2018-1-11 18:36:57

我tm连老奶奶都不扶就扶你

jinfeng775 发表于 2018-1-11 18:41:43

收徒吗?老铁!会暖床会嘤嘤嘤的大屌萌妹是也

kyza90123 发表于 2018-3-5 00:01:06

谢谢分享啦
页: [1] 2 3
查看完整版本: python小练习(074):简单游戏AI设计之六(带AI的贪食蛇)