贪吃蛇是人人皆知的游戏。传统的贪吃蛇非常简单,玩法在这里不详述。但是,有人提出了一个“破解”的方法,必通关:
忽略食物,只要严格按S形绕着走就可以了。
当然,这是一种很好的方法,但这么玩似乎意义不大。为了防止这种情况出现,我们可以改变一下规则:
- 食物限时,超时重新放置
- 游戏整体也限时
这样可玩性无疑提高了,并且杜绝了之前的“破解”方法。
前段时间,AI与人类的下棋比赛引人注目,我们是否也可以设计一个算法,让计算机来完成这个贪吃蛇的游戏呢?
一个朴素的算法是这样的:
// Hx,Hy: 头的位置
// Fx,Fy:食物的位置
// function whereGoNext(Hx,Hy,Fx,Fy) {
// 用数组movable[3]={“a”,”d”,”w”,”s”} 记录可走的方向
// 用数组distance[3]={0,0,0,0} 记录离食物的距离
// 分别计算蛇头周边四个位置到食物的距离。H头的位置,F食物位置