智能蛇(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]
}
实现自动搜寻的代码如下:
智能蛇的程序框架如下:
输出字符矩阵
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; } }
相关文章推荐
- C语言 编写程序实现字符串比较,不允许使用strcmp函数。
- 能被400或者4整除。 判断是否闰年 判断是一年的多少天 用C语言编写下列程序要源码:“输入年月日
- 用C语言编写程序:求两数的最大公约数。
- 利用c语言编写程序输出一个数的每一位(多种方法)
- 用C语言编写控制台程序进行调试时程序闪退的解决办法
- 用C语言编写Windows服务程序的五个步骤
- C语言 编写程序输出九九乘法口诀表
- 用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。
- 用C语言在NDS上编写程序
- C语言中使用位运算编写程序
- 在Visual Studio 2013 中编写C语言、C++程序
- c语言编写的cgi程序实现登陆模块
- 【c语言】编写程序,使字符串逆序,空间复杂度O(1)
- 编写可移植C/C++程序的要点
- C语言 编写程序实现字符串拷贝,不允许调用strcpy函数。
- spark程序编写要点
- 用C语言编写Windows服务程序的五个步骤
- C语言编写51单片机程序:键控流水灯
- C语言编写基于TCP和UDP协议的Socket通信程序示例
- 用C语言编写程序实现Zip或者Rar无损压缩算法