迷宫游戏C语言代码讲解.doc

迷宫游戏C语言代码讲解.doc

ID:56652390

大小:1.44 MB

页数:29页

时间:2020-07-01

迷宫游戏C语言代码讲解.doc_第1页
迷宫游戏C语言代码讲解.doc_第2页
迷宫游戏C语言代码讲解.doc_第3页
迷宫游戏C语言代码讲解.doc_第4页
迷宫游戏C语言代码讲解.doc_第5页
资源描述:

《迷宫游戏C语言代码讲解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/*迷宫游戏byCDQ*//*vc++6.0编译成功本程序参照网上一个特殊算法随机生成迷宫该算法优点:效率高,从入口到出口只有唯一路径,入口出口自己设定该算法缺点:宽度高度都必须为奇数,只能生成n*m矩阵迷宫*/#include#include#include#include#defineHeight31//迷宫的高度,必须为奇数#defineWidth25//迷宫的宽度,必须为奇数#defineWall1#defineRoad0#defineStart2#defineEnd3#defineEsc5#defi

2、neUp1#defineDown2#defineLeft3#defineRight4intmap[Height+2][Width+2];voidgotoxy(intx,inty)//移动坐标{COORDcoord;coord.X=x;coord.Y=y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);}voidhidden()//隐藏光标{HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFOcci;GetConsoleCursorI

3、nfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);}voidcreate(intx,inty)//随机生成迷宫{intc[4][2]={0,1,1,0,0,-1,-1,0};//四个方向inti,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(

4、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]);}}intget_key()//接收按键{charc;while(c=getch()){if(c==27)returnEsc;//Escif(c!=-32)continue;c=getch();if(c==72)returnUp;//上if(c==80)returnDown;//下if(c==75)returnLeft;//左if(c==77)returnRight;//右}retur

5、n0;}voidpaint(intx,inty)//画迷宫{gotoxy(2*y-2,x-1);switch(map[x][y]){caseStart:printf("入");break;//画入口caseEnd:printf("出");break;//画出口caseWall:printf("※");break;//画墙caseRoad:printf("");break;//画路}}voidgame(){intx=2,y=1;//玩家当前位置,刚开始在入口处intc;//用来接收按键while(1){gotoxy(2*y-2,x-1);printf("☆");//画出玩家当前位置i

6、f(map[x][y]==End)//判断是否到达出口{gotoxy(30,24);printf("到达终点,按任意键结束");getch();break;}c=get_key();if(c==Esc){gotoxy(0,24);5回复1楼2011-12-0715:46举报

7、我也说一句未来未来追忆曾经_团子家族10break;}switch(c){caseUp://向上走if(map[x-1][y]!=Wall){paint(x,y);x--;}break;caseDown://向下走if(map[x+1][y]!=Wall){paint(x,y);x++;}break;caseL

8、eft://向左走if(map[x][y-1]!=Wall){paint(x,y);y--;}break;caseRight://向右走if(map[x][y+1]!=Wall){paint(x,y);y++;}break;}}}intmain(){inti,j;srand((unsigned)time(NULL));//初始化随即种子hidden();//隐藏光标for(i=0;i<=Height+1;i++)for(j=0;j<=Width+1;j++)if(i=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。