#include #define Height 33

#define Width 31

#define Wall 1

#define Road 0

#define Start 2

#define End 3

#define Esc 5

#define Up 1

#define Down 2

#define Left 3

#define Right 4

int map[Height+2][Width+2];

void gotoxy(int x,int y) //移动坐标

{

COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );

}

void create(int x,int y) //随机生成迷宫

{

int c[4][2]={0,1,1,0,0,-1,-1,0}; //四个方向

int i,j,t;

//将方向打乱

for(i=0;i<4;i++)

{

j=rand()%4;

t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;

t=c[i][1];c[i][1]=c[j][1];c[j][1]=t; }

map[x][y]=Road;

for(i=0;i<4;i++)

if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall)

{

map[x+c[i][0]][y+c[i][1]]=Road;

create(x+2*c[i][0],y+2*c[i][1]);

}

}

int get_key() //接收按键

{

char c;

while(c=getch())

{

if(c==27) return Esc; //Esc

if(c!=-32)continue;

c=getch();

if(c==72) return Up; //上

if(c==80) return Down; //下

if(c==75) return Left; //左

if(c==77) return Right; //右

}

return 0; }

void paint(int x,int y) //画迷宫

{

gotoxy(2*y-2,x-1);

switch(map[x][y])

{

case Start:

printf("入");break; //画入口

case End:

printf("出");break; //画出口

case Wall:

printf("█");break; //画墙

case Road:

printf(" ");break; //画路

}

}

void game()

{

int x=2,y=1; //玩家当前位置,刚开始在入口处

int c; //用来接收按键

while(1)

{

gotoxy(2*y-2,x-1);

printf("㊣"); //画出玩家当前位置

if(map[x][y]==End) //判断是否到达出口

{

gotoxy(32,30);

printf("到达终点,按任意键结束");

getch();

break;

}

c=get_key();

if(c==Esc)

{

gotoxy(0,30);

break;

}

switch(c)

{

case Up: //向上走

if(map[x-1][y]!=Wall)

{

paint(x,y);

x--;

}

break;

case Down: //向下走

if(map[x+1][y]!=Wall)

{

paint(x,y);

x++;

}

break;

case Left: //向左走

if(map[x][y-1]!=Wall)

{

paint(x,y);

y--; }

break;

case Right: //向右走

if(map[x][y+1]!=Wall)

{

paint(x,y);

y++; }

break;

}

}

}

int main()

{

system("color 04");

int i,j;

srand((unsigned)time(NULL)); //初始化随即种子

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[i][j]=Road;

else map[i][j]=Wall;

create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //从随机一个点开始生成迷宫,该点行列都为偶数

for(i=0;i<=Height+1;i++) //边界处理

{

map[i][0]=Wall;

map[i][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; }

c语言模拟走迷宫课程程序设计报告,《C语言程序设计》走迷宫游戏程序设计.doc...相关推荐

  1. c语言倒计时软件设计,课程设计报告(C语言)倒计时.doc

    课程设计报告书 课程名称 <高级语言课程设计> 专 业 计算机科学与技术 倒计时 功能说明 我要做的是用c语言设计倒计时程序,我是用while语句实现对其倒计时的循环.用_sleep()实 ...

  2. c语言链表p-%3enext,课程设计报告.c语言程序设计.pdf

    课程设计报告.c语言程序设计 学生成绩管理 C语言课程设计报告 学 院 _信息学院_ 专 业 软件工程 班 级 _ _ 学 号 姓 名 课 题 _C语言课程设计_ 指导教师 __ 杨老师 _ 报告成绩 ...

  3. c语言黑白棋程序设计报告,C语言课程设计报告--黑白棋.doc

    C语言程序设计 课程设计 题目: 黑白棋 课程设计(报告)任务及评语 学 号学生姓名专业班级程序设计(报告)题目黑白棋程序设计(报告)任务 程序设计的任务与要求: (1)掌握C语言编程的基础知识. ( ...

  4. 计算机专业课程设计报告c语言,计算机程序设计(C语言)课程设计报告.doc

    计算机程序设计(C语言)课程设计报告.doc 计算机程序设计C语言课程设计报告题目电子动画时钟 学院 机电工程学院专业 班级090109班学号 姓名 指导教师 设计日期 一.概述选题背景 随着社会的进 ...

  5. 学籍管理c语言程序设计报告,C语言程序设计课程设报告—学籍管理系统.doc

    C语言程序设计课程设报告-学籍管理系统 电子科技大学 C语言课程设计报告 题 目 : 学籍管理系统 院系: 电 子 工 程 学 院 姓名: 石 胡 森 学号: 2013020904005 指导教师:胡 ...

  6. c语言基础程序设计报告,c语言程序设计基础课程设计报告.doc

    c语言程序设计基础课程设计报告.doc 还剩 16页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: C 语言程序 ...

  7. c语言银行卡管理系统程序设计报告,C语言课程设计报告(银行账户信息管理系统).doc...

    新疆大学学生课程设计论文 摘要 PAGE I 银行账户管理系统C语言程序设计 摘 要 银行账户管理系统是针对银行账户的日常管理而设计,操作方便而且界面简洁,使用较为简单的C语言作为编程语言,采用软件工 ...

  8. c语言学生考勤系统课设报告,C语言课程设计总结报告学生考勤系统设计

    C语言课程设计总结报告学生考勤系统设计 C语言程序设计课程设计报告设计题目:学生考勤系统设计专 业 自 动 化 班 级 自 动 化 071 学 生 朱 胜 佳 指导教师 梁 德 胜 2008 年 春季 ...

  9. C语言课程学籍管理课程书面报告,C语言学籍管理系统课程设计报告书

    <C语言学籍管理系统课程设计报告书>由会员分享,可在线阅读,更多相关<C语言学籍管理系统课程设计报告书(30页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计课程设计报告学 ...

  10. C语言售货系统,自动售货机报告c语言课程设计.docx

    自动售货机报告c语言课程设计 PAGE \* MERGEFORMAT11 自动售货机图形模拟系统需求分析 课题名称:自动售货机图形模拟系统小组成员:朱伟鑫U201314490班 级:测控1301班指导 ...

最新文章

  1. 简洁好用的数据库表结构文档生成工具!
  2. MySQL中如何修改表
  3. Wijmo 更优美的jQuery UI部件集:复合图表(CompositeChart)
  4. 世界第一位计算机程序员竟是女的!拜伦之女传奇一生
  5. 《一本书》文字展示网站Typecho主题
  6. 【Flink】Flink 设置JVM参数
  7. 小姐姐给我讲,一听就懂的财务报表
  8. layer自动补全 select
  9. 中介者模式(Mediator) 笔记
  10. react native+typescript创建移动端项目-(慕课网喜马拉雅项目笔记)-(二,导航器navigator)
  11. 自动化测试简介及环境搭建
  12. intptr_t 和 uintptr_t类型使用总结
  13. 【硬件工程师】元器件选型都不会?
  14. Android实现通话呼叫转移与监听通话录音功能
  15. 【PTA-python】第4章-15 换硬币 (20 分)
  16. 年薪40万的腾讯实习生作息表流出,我才知道什么叫人间真实
  17. 爬取新型冠状病毒的历史数据
  18. linux2T硬盘分区命令,linux系统使用parted命令对大于2T的硬盘进行分区教程
  19. oracle 允许级联删除,oracle系列--级联删除和级联更新
  20. errorCode 1045,state 28000: Access denied for user 'mysql'@'localhost' (using password: YES)

热门文章

  1. php获取cnzz数据,PHP curl抓取cnzz统计数据
  2. java 高并发商城库存订单处理,下单减库存,如何解决高并发减库存问题
  3. postman如何设置字体大小
  4. webrtc进阶-信令篇-之三:信令、stun、turn、ice
  5. 发那科pmc编程手册_干货|发那科FANUC PMC编程步骤精编版(图文并茂)
  6. android:使用small一步步实现插件化与热更新
  7. HTTP状态代码(各种错误代码集合)超全
  8. 02-CSS基础与进阶-day7_2018-09-07-20-25-28
  9. 龙族幻想服务器正在维护中,【龙族幻想】3月18日维护公告
  10. 搭建基于XDEBUG的调试环境