本文实例讲述了C语言实现简单的走迷宫游戏的方法,代码完整,便于读者理解。

学数据结构时用“栈”写的一个走迷宫程序,实际上用到双向队列,方便在运行完毕后输出经过的点。

#include

#include

#include

using namespace std;

class node

{

public:

int x,y;

int lastOpt;

};

deque sta;

int x,y;

int endx,endy;

int mapW,mapH;

int steps;

int xopt[5]= {0,0,1,0,-1};

int yopt[5]= {0,1,0,-1,0};

int map[100][100]=

{

};

void init()

{

x = 1;

y = 1;

endx = 1;

endy = 9;

mapH = 10;

mapW = 10;

for(int i=0; i<=mapH; i++)

for(int j=0; j<=mapW; j++)

{

if(i==0 ||j==0 ||i==mapH||j==mapW)

map[i][j]=-1;

}

steps=0;

map[1][2]=-1;

map[2][2]=-1;

map[3][2]=-1;

map[4][2]=-1;

map[6][2]=-1;

map[7][2]=-1;

map[8][2]=-1;

map[9][2]=-1;

map[9][3]=-1;

map[8][3]=-1;

map[1][4]=-1;

map[3][4]=-1;

map[4][4]=-1;

map[5][4]=-1;

map[6][4]=-1;

map[7][4]=-1;

map[1][6]=-1;

map[2][6]=-1;

map[3][6]=-1;

map[4][6]=-1;

map[5][6]=-1;

map[6][6]=-1;

map[7][6]=-1;

map[8][6]=-1;

map[8][7]=-1;

map[8][8]=-1;

map[7][8]=-1;

map[6][8]=-1;

map[5][8]=-1;

map[4][8]=-1;

map[3][8]=-1;

map[2][8]=-1;

map[1][8]=-1;

map[endx][endy]=5;

}

void dis()

{

system("cls");

int ori = map[x][y];

map[x][y]=1;

for(int i=0; i<=mapH; ++i)

{

for(int j=0; j<=mapW; ++j)

{

if(map[i][j]==0)

printf(" ");

else if(map[i][j]==-1)

printf(" #");

else if(map[i][j]==1)

printf(" @");

else if(map[i][j]==2)

printf(" .");

else if(map[i][j]==5)

printf(" !");

}

cout<

}

for(int j=0; j<=mapW; ++j)

cout<

printf("\n\n > steps:%d Exit:(%d,%d)\n",steps,endx,endy);

map[x][y] = ori;

}

int can(int n)

{

if(map[x+xopt[n]][y+yopt[n]] == 0 || map[x+xopt[n]][y+yopt[n]] == 5)

return 1;

return 0;

}

void visit(int n)

{

map[x][y]=2;

x+=xopt[n];

y+=yopt[n];

node tem;

tem.x = x;

tem.y = y;

tem.lastOpt = n;

sta.push_back(tem);

steps++;

}

int main()

{

init();

node tem;

while( x != endx || y!=endy)

{

int cans = 0;

for(int i=1; i<=4; i++)

{

if(can(i))

{

cans = 1;

visit(i);

break;

}

}

if(!cans)

{

if(!sta.empty())

{

tem = sta.back();

map[tem.x][tem.y]=0;

sta.pop_back();

}

else

{

map[x][y]=2;

x+=xopt[tem.lastOpt];

x+=yopt[tem.lastOpt];

dis();

break;

}

}

dis();

Sleep(500);

}

if(x==endx && y == endy)

cout< i am finished....\n";

else

cout< i am finished...but i can't find the right way\n";

return 0;

}

效果图:

以上就是本文的全部内容,希望对大家学习C语言有所帮助。

c语言大作业走迷宫,基于C语言实现简单的走迷宫游戏相关推荐

  1. 西工大c语言大作业题目,西工大c语言大作业.ppt

    <西工大c语言大作业.ppt>由会员分享,可在线阅读,更多相关<西工大c语言大作业.ppt(43页珍藏版)>请在人人文库网上搜索. 1.二项系数1.二项式系数C(n,k)因其在 ...

  2. 桂林电子科技大学C语言大作业,桂林电子科技大学c语言程序设计习题集及答案qvzaewzm.doc...

    桂林电子科技大学c语言程序设计习题集及答案qvzaewzm 一 单项选择题(每题2分,共44分) 1 以下叙述正确的是__C_. A C程序基本组成单位是语句 B C程序每一行只能写一个语句 C 简单 ...

  3. c语言大作业教室预约管理系统,C语言程序设计——教室管理系统(源代码))

    C语言程序设计--教室管理系统(源代码) 非常有用的. #include #include #include #define szSTR 64 #define fileDB "c:\\con ...

  4. c语言大作业书店图书管理系统,c语言课程设计 书店管理系统.pdf

    c语言课程设计 书店管理系统 计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一 ...

  5. c语言大作业书店图书管理系统,C语言_课程设计—书店图书管理系统.doc

    计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24日 一.选题背景: 设计一个图书管理系统,管理员通过登陆账 ...

  6. c语言大作业书店图书管理系统,C语言课程设计书店管理系统.pdf

    计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一个图书管理系统,管理员通过登陆 ...

  7. 学生证选课系统c语言大作业,学生选课管理系统c语言程序

    #include #include #include int N1,N2; struct couse * head1; struct student * head2; struct couse //课 ...

  8. c语言大作业酒店管理系统,用C语言编写的酒店管理系统

    #include #include #include int max=1;//用于计数用户登录 int room[5][5];//声明一个2维数组保留每个房间的入住 int jishi[5][5];/ ...

  9. 基于游戏开发的C语言大作业视频集锦

    基于游戏开发的C语言大作业视频集锦 从2014年至今,尝试了基于游戏开发的C语言程序设计教学,每次课程均会布置大作业,以下视频为一些学生做的大作业视频集锦. 基于游戏开发的C语言大作业视频集锦 后续, ...

  10. 江南大学C语言大作业,TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc...

    TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc TCP/IP协议编程大作业 课题名称 基于TCP的网络通信 专 业 计算机科学与技术 班 级 计算机1206 学 号 103041 ...

最新文章

  1. 快速求斯特林数总结(洛谷模板题解)
  2. 7.0系统设备xposed框架激活经验
  3. excel 按数据拆分 xlam_Excel按类别名称自定义排序:玩转Excel数据
  4. 0基础学python-看完这篇,零基础也知道怎么学Python
  5. DDD:群里关于验证的结论
  6. win7装64位oracle和PLSQL
  7. 1、Locust压力测试环境搭建
  8. 在计算机科学中计算是指,在计算机中数值计算是指什么
  9. Js中函数式编程的理解
  10. 不到100行写出一个完整的web框架
  11. pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
  12. Oracle中UNION和ORDER BY共用方法
  13. 学习webpack系列之三 ---- (输出管理)
  14. vs vb连接mysql,用vs2010的vb.net建立和access数据库的连接后的奇怪问题:关于本地复制...
  15. mysql varbinary类型_mysql中varbinary、binary、char、varchar异同
  16. 沟通书籍排行榜前十名 提高沟通能力的十大书籍推荐
  17. react 项目的一个ie8兼容性问题
  18. vs code里面的less插件一直报错_ipad4现在怎么登微信?一直显示微信版本过低怎么办...
  19. 微信小程序游戏开发介绍,微信互动游戏有哪些?
  20. 企业研发人员配备比例_如何理解高新技术企业认定对研发人员比例的要求

热门文章

  1. bootstrap轮播图 原点变为方块_JS实现无缝切换轮播图(自动+手动)
  2. 仓鼠大厦java下载_仓鼠大厦食盐宫殿 世界古怪酒店TOP10(组图)
  3. java mail 503_邮件配置报503错误,发送失败
  4. java函数的参数传递
  5. c/c++通用头文件
  6. Mysql之索引详解
  7. Codeforces 213E Two Permutations 线段树 (看题解)
  8. SpringSecurity实现记住我功能
  9. storm的数据源编程单元Spout学习整理
  10. iOS软件开发架构理解