您的位置:首页 > 编程语言 > C语言/C++

智能蛇(C语言)程序编写要点

2017-12-28 21:51 225 查看
   上一篇博客中,我们了解了贪吃蛇的C程序。现在,我们将探索“智能蛇”程序的编写。智能蛇即让蛇能通过算法具有 “感知 - 决策 - 行动” 的能力,能自动吃食。

   智能蛇的程序框架如下:

   输出字符矩阵

   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!!!

   不难看出,实现“智能蛇”的关键是通过算法确定蛇下一步行走的方向。决定蛇行走方向的伪代码如下:

{

  // 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]

}

   实现自动搜寻的代码如下:

if (xdirection == 'D')
{
if (D == 1)
next = 'D';
else if (W == 1)
next = 'W';
else if (S == 1)
next = 'S';
else if (A == 1)
next = 'A';
else
{
system("cls");
getchar();
return 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: