字符游戏——智能蛇
做完贪吃蛇之后,我们可以设计算法,通过算法捕捉和传递智能。设计出能自动跑着吃食物的智能蛇。
首先,用自顶向下、逐步加精的设计模式先给出整个程序的伪代码。
输出字符矩阵
WHILE not 游戏结束 DO
wait(time)
ch=whereGoNext(Hx,Hy,Fx,Fy)
CASE ch DO
‘A’:左前进一步,break
‘D’:右前进一步,break
‘W’:上前进一步,break
‘S’:下前进一步,break
END CASE
输出字符矩阵
END WHILE
输出 Game Over!!!
而关于智能蛇是怎么智能的,我们可以通过这个GIF来分析一下:
由这张图片我们可以看到,智能蛇的一种脑残工作原理即是:让自己一行一行或者一列一列扫过区间,这样不仅可以吃到食物还可以免于撞到自己。
具体的想法如下:
首先, 蛇头总是挨着蛇身走, 这样不仅使整个画面清晰, 而且为贪吃蛇节约可以行走的空间, 减少被自己的身子围起来而无法行走的空间。
其次,当蛇往当前移动方向的相反方向去吃食物时会在图像的边缘预留一行或一列给自己逃生,防止因逃出画面或者将自己困在两侧的身子中而牺牲。
然后,尽量为大块的空间流出至少两行或两列的进出口, 使得贪吃蛇可以进入其中吃东西或者放自己多余的身子。
当贪吃蛇为了吃到食物而没有贴着身子走的时候, 吃到食物后立即贴着身子走或者掉头。
这便是我的学习心得,感谢阅读。