ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:17.91KB ,
资源ID:23686010      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23686010.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(迷宫游戏C语言小游戏源代码.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

迷宫游戏C语言小游戏源代码.docx

1、迷宫游戏C语言小游戏源代码迷宫源代码:#include #include #include #include #include #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define F9 0x43#define Esc 0x1b#define Del 0x53#define Home 0x47#define End 0x4f#define Space 0x20#define Up 0x48#define Down 0x50#define Left 0x4b#define Right 0x4d#define Enter 0

2、x0d#define F2 0x3c#define F3 0x3d#define STACK_INIT_SIZE 200#define STACKINCREMENT 10typedef int Boolean;typedef int Status;typedef suct int x;int y; PosType;typedef suct int ord;PosType seat;int di; SElemType;typedef suct int ;int foot;int mark; MazeType;typedef suct SElemType *base;SElemType *top;

3、int stacksize; Stack;int Maze2030;MazeType maze2030;PosType StartPlace;PosType EndPlace;int count;int m,n;Boolean b_start=FALSE,b_end=FALSE;void CreatMaze(void);Status SaveMaze(char *filename);Status LoadMaze(char *filename);void Error(char *message);Status InitStack(Stack *s);Status DesoyStack(Stac

4、k *s);Status ClearStack(Stack *s);Boolean StackEmpty(Stack *s);int StackLength(Stack *s);Status Push(Stack *s,SElemType e);SElemType Pop(Stack *s,SElemType e);Status GetTop(Stack *s,SElemType *e);Status StackTraverse(Stack *s,Status (* visit)(SElemType *se);Boolean Pass(PosType curpos);void MarkPrin

5、t(PosType seat);void FootPrint(PosType curpos);PosType NextPos(PosType seat,int di);Status MazePath(PosType start,PosType end);void CreatMaze(void)/* Form the maze. */void Error(char *message);Status SaveMaze(char *filename);Status LoadMaze(char *filename);int i,j;int x,y;char c;char savename12,load

6、name12;Boolean flag=FALSE,load=FALSE;clrscr();printf(Menu:nn);printf(1.Load Mazefile:(*.dd)nn);printf(2.Input Maze:nn);printf(Input your choice: );doc=getch();switch(c)case 1: putch(1); break;case 2: putch(2); break;case Esc: sleep(1); exit(1);default: break;while(c!=1&c!=2) ;if(c=1)printf(nnLoadNam

7、e: );scanf(%s,loadname);if(LoadMaze(loadname)sleep(1); load=TRUE;else gotoxy(1,9); printf(Load fail! ); if(!load)printf(nInput the mazes size:n);printf(nInput Length :n);scanf(%d,&m);printf(nInput Width :n);scanf(%d,&n);if(m4|n30|n20) Error(Maze too large);for(i=0;i30;i )for(j=0;j for(i=1;i=n;i )for

8、(j=1;j3) y-; gotoxy(x,y); break;case Down: if(y4) x-=2; gotoxy(x,y); break;case Right: if(x2*m-2) x =2; gotoxy(x,y); break;case Del: if(y-2=StartPlace.y&x/2-1=StartPlace.x) b_start=FALSE;if(y-2=EndPlace.y&x/2-1=EndPlace.x) b_end=FALSE;putch( ); Mazey-2x/2-1=1; gotoxy(x,y);break;case Enter: if(y-2=St

9、artPlace.y&x/2-1=StartPlace.x) break;if(y-2=EndPlace.y&x/2-1=EndPlace.x) break;putch(#); Mazey-2x/2-1=0; gotoxy(x,y);break;case Home: if(Mazey-2x/2-1&!b_start)StartPlace.x=x/2-1;StartPlace.y=y-2;putch(S);gotoxy(x,y);b_start=TRUE;break;case End: if(Mazey-2x/2-1&!b_end)EndPlace.x=x/2-1;EndPlace.y=y-2;

10、putch(E);gotoxy(x,y);b_end=TRUE;break;case Esc: gotoxy(2,22); printf(exit); sleep(1); exit(1);case F9: if(b_start&b_end) flag=TRUE; break;case F2: gotoxy(2,22);printf(Savename:);scanf(%s,savename);gotoxy(2,22);if(SaveMaze(savename) printf(Save OK! );else printf(Save fail! );sleep(1);gotoxy(2,22);pri

11、ntf( );gotoxy(x,y);break;default: break;while(!flag);for(i=0;i30;i )for(j=0;j20;j )mazeji.=Mazeji;mazeji.mark=0;mazeji.foot=0;Status LoadMaze(char *file)/* The maze has been loaded. */FILE *fp;char *buffer;char ch;int i=0,j,k;Boolean len=FALSE,wid=FALSE;if(fp=fopen(file,r)=NULL)return ERROR;buffer=(

12、char *)malloc(600*sizeof(char);ch=fgetc(fp);while(ch!=EOF)bufferi=ch;i ;ch=fgetc(fp);m=30;n=20;for(i=0;i600;i )j=i/30; k=i0;if(bufferi=2&!len) m=i; len=TRUE; if(k=0&bufferi=2&!wid) n=j; wid=TRUE; switch(bufferi)case 0: Mazejk=0; break;case 1: Mazejk=1; break;case 2: Mazejk=2; break;case 3: Mazejk=1;

13、StartPlace.x=k;StartPlace.y=j;b_start=TRUE;break;case 4: Mazejk=1;EndPlace.x=k;EndPlace.y=j;b_end=TRUE;break;default : break;fclose(fp);clrscr();for(i=0;i30;i )for(j=0;j20;j )mazeji.=Mazeji;mazeji.foot=0;mazeji.mark=0;if(Mazeji=0)gotoxy(2*i 2,j 2);putch(#);gotoxy(2*StartPlace.x 2,StartPlace.y 2);put

14、ch(S);gotoxy(2*EndPlace.x 2,EndPlace.y 2);putch(E);return OK;Status SaveMaze(char *filename)/* The maze has been saved. */FILE *fp;char *buffer;int i,j,k;fp=fopen(filename,wb);buffer=(char *)malloc(600*sizeof(char);for(i=0;ibase=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType);if(!s-base) Error

15、(Overflow);s-top=s-base;s-stacksize=STACK_INIT_SIZE;return OK; /* InitStack */Status DesoyStack(Stack *s)/* The stack s has been desoyed. */s-top=NULL;s-stacksize=0;free(s-base);s-base=NULL;return OK; /* DesoyStack */Status ClearStack(Stack *s)/* The stack has been clear to be maximum. */s-top=s-bas

16、e;s-stacksize=STACK_INIT_SIZE;return OK; /* ClearStack */Boolean StackEmpty(Stack *s)/* Check if the stack s is empty. */if(s-top=s-base) return TRUE;else return FALSE; /* StackEmpty */int StackLength(Stack *s)/* Gain the length of the stack s. */if(s-tops-base) return (int)(s-top-s-base);else retur

17、n 0; /* StackLength */Status Push(Stack *s,SElemType e)/* The element e has been pushed into the stack s. */if(s-top-s-base=s-stacksize)s-base=(SElemType *)realloc(s-base,(s-stacksize STACKINCREMENT)*sizeof(SElemType);if(!s-base) Error(Overflow);s-top=s-base s-stacksize;s-stacksize =STACKINCREMENT;*

18、s-top =e;return OK; /* Push */SElemType Pop(Stack *s,SElemType e)/* The element e has been removed from the stack s. */if(s-top=s-base) Error(Pop);e=*-s-top;return e; /* Pop */Status GetTop(Stack *s,SElemType *e)/* The element e has got to the top of the stack s.*/if(s-top=s-base) Error(GetTop);*e=*

19、(s-top-1);return OK; /* GetTop */* Traverse the stack s using visiting function. */* Status StackTraverse(Stack *s,Status (* visit)(SElemType *se)SElemType p;int result;if(s-top=s-base) return ERROR;p=s-base;while(!(p=s-top)result=(*visit)(p);p ;return OK; */Boolean Pass(PosType curpos)/* Check if the current position can be passed. */if(mazecurpos.xcurpos.y.=1&mazecurpos.xcurpos.y.foot=0&mazecurpos.xcurpos.y.mark=0)return TRUE;else return FALSE; /* Pass */void MarkPrint(PosType seat)/* Mark the position seat. */mazeseat.x

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1