进行判断是否到达终点,如果达到终点或按ESC则结束游戏,负责就开始接受按键,进行移动,说是移动实际上就是不断变化 map[x][y] x和y的值 并进行判断是否到达终点,按下ESC如果没有则根据 x++ x-- y++ y-- 来进行上下左右后改变所在二维数组中的位置 打个比方 a[2][2]
分别有a[0][0]a[0][1] 11
a[1][0]a[1][1] 21 如果处在2的位置 那么按下上 也就是说数组元素a[1][0]变成了a[0][0] 如果用 这里用a[x][y]来进行表示,那么就是等于x--;其他同理
最后我们来看一下main函数 int main() { int i,j;
srand((unsigned)time(NULL)); //初始化随即种子 hidden(); //隐藏光标
for(i=0;i<=Height+1;i++) for(j=0;j<=Width+1;j++)
if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宫 map[j]=Road; else map[j]=Wall;
create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //从随机一个点开始生成迷宫,该点行列都为偶数
for(i=0;i<=Height+1;i++) //边界处理 {
map[0]=Wall; map[Width+1]=Wall; }
for(j=0;j<=Width+1;j++) //边界处理 {
map[0][j]=Wall; map[Height+1][j]=Wall; }
map[2][1]=Start; //给定入口
map[Height-1][Width]=End; //给定出口
for(i=1;i<=Height;i++)
for(j=1;j<=Width;j++) //画出迷宫 paint(i,j);
game(); //开始游戏 getch(); return 0; }
先是srand来初始化随机种子 为create打下基础
然后给map赋值 输出后成四面全是墙,中间全是路的 也就是000 010 000
//0是墙,1是路 这样
然后用create生成正式的迷宫,根据rand来随机生成路线 之后重新处理边界,以及定义入口点和出口点 ,可以试着删掉 for(i=0;i<=Height+1;i++) //边界处理 {
map[0]=Wall; map[Width+1]=Wall;
}
for(j=0;j<=Width+1;j++) //边界处理 {
map[0][j]=Wall; map[Height+1][j]=Wall; }
这段 如果在入口处按左,你会发现BUG了!! 删掉这两段
map[2][1]=Start; //给定入口
map[Height-1][Width]=End; //给定出口 导致你一旦从入字走出,就再也走出不迷宫 最后使用print函数 根据数组元素的值 画出迷宫. 用game进行游戏循环并判断游戏是否结束
第一次写源码分析..蛋疼..尤其是发帖 发了N次 终于不知道为什么百度不和谐了
最后..我爱C语言 么么哒
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库迷宫c语言(5)在线全文阅读。
相关推荐: