自上次打出贪吃蛇后,老师又要求我们让电脑自动控制蛇,称之为智(zhi)能(zhang)蛇。对于我这样的初学者,即使是上网借鉴(copy)了好多算法,依然只看得懂最简单的那种。
下面是这种算法的伪代码:
// Hx,Hy: 头的位置
// Fx,Fy:食物的位置
function whereGoNext(Hx,Hy,Fx,Fy) {
// 用数组movable[3]={“a”,”d”,”w”,”s”} 记录可走的方向
// 用数组distance[3]={0,0,0,0} 记录离食物的距离
// 分别计算蛇头周边四个位置到食物的距离。H头的位置,F食物位置
// 例如:假设输入”a” 则distance[0] = |Fx – (Hx-1)| + |Fy – Hy| //
如果 Hx-1,Hy 位置不是Blank,则 distance[0] = 9999
// 选择distance中存最小距离的下标p,注意最小距离不能是9999
// 返回 movable[p] }
这个伪代码其实十分的简单(智障),因为当蛇变长以后就很容易将自己卡死,但对于我这种初学者来说还算不错了。