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

上传人:b****8 文档编号:9533292 上传时间:2023-05-19 格式:DOCX 页数:26 大小:17.91KB
下载 相关 举报
迷宫游戏C语言小游戏源代码.docx_第1页
第1页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第2页
第2页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第3页
第3页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第4页
第4页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第5页
第5页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第6页
第6页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第7页
第7页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第8页
第8页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第9页
第9页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第10页
第10页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第11页
第11页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第12页
第12页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第13页
第13页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第14页
第14页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第15页
第15页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第16页
第16页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第17页
第17页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第18页
第18页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第19页
第19页 / 共26页
迷宫游戏C语言小游戏源代码.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《迷宫游戏C语言小游戏源代码.docx》由会员分享,可在线阅读,更多相关《迷宫游戏C语言小游戏源代码.docx(26页珍藏版)》请在冰点文库上搜索。

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

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

迷宫源代码:

#include

#include

#include

#include

#include

#defineOK1

#defineERROR0

#defineTRUE1

#defineFALSE0

#defineF90x43

#defineEsc0x1b

#defineDel0x53

#defineHome0x47

#defineEnd0x4f

#defineSpace0x20

#defineUp0x48

#defineDown0x50

#defineLeft0x4b

#defineRight0x4d

#defineEnter0x0d

#defineF20x3c

#defineF30x3d

#defineSTACK_INIT_SIZE200

#defineSTACKINCREMENT10

typedefintBoolean;

typedefintStatus;

typedefsuct{

intx;

inty;

}PosType;

typedefsuct{

intord;

PosTypeseat;

intdi;

}SElemType;

typedefsuct{

int;

intfoot;

intmark;

}MazeType;

typedefsuct{

SElemType*base;

SElemType*top;

intstacksize;

}Stack;

intMaze[20][30];

MazeTypemaze[20][30];

PosTypeStartPlace;

PosTypeEndPlace;

intcount;

intm,n;

Booleanb_start=FALSE,b_end=FALSE;

voidCreatMaze(void);

StatusSaveMaze(char*filename);

StatusLoadMaze(char*filename);

voidError(char*message);

StatusInitStack(Stack*s);

StatusDesoyStack(Stack*s);

StatusClearStack(Stack*s);

BooleanStackEmpty(Stack*s);

intStackLength(Stack*s);

StatusPush(Stack*s,SElemTypee);

SElemTypePop(Stack*s,SElemTypee);

StatusGetTop(Stack*s,SElemType*e);

StatusStackTraverse(Stack*s,Status(*visit)(SElemType*se));

BooleanPass(PosTypecurpos);

voidMarkPrint(PosTypeseat);

voidFootPrint(PosTypecurpos);

PosTypeNextPos(PosTypeseat,intdi);

StatusMazePath(PosTypestart,PosTypeend);

voidCreatMaze(void)

/*Formthemaze.*/

{

voidError(char*message);

StatusSaveMaze(char*filename);

StatusLoadMaze(char*filename);

inti,j;

intx,y;

charc;

charsavename[12],loadname[12];

Booleanflag=FALSE,load=FALSE;

clrscr();

printf("Menu:

\n\n");

printf("1.LoadMazefile:

(*.dd)\n\n");

printf("2.InputMaze:

\n\n");

printf("Inputyourchoice:

");

do

{

c=getch();

switch(c)

{

case''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''':

putch(''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''');break;

case''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''':

putch(''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''');break;

caseEsc:

sleep

(1);exit

(1);

default:

break;

}

}

while(c!

=''''''''''''''''''''''''''''''''1''''''''''''''''''''''''''''''''&&c!

=''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''');

if(c==''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''')

{

printf("\n\nLoadName:

");

scanf("%s",loadname);

if(LoadMaze(loadname))

{

sleep

(1);load=TRUE;

}

else{gotoxy(1,9);printf("Loadfail!

");}

}

if(!

load)

{

printf("\nInputthemaze''''''''''''''''''''''''''''''''ssize:

\n");

printf("\nInputLength:

\n");

scanf("%d",&m);

printf("\nInputWidth:

\n");

scanf("%d",&n);

if(m<4||n<4)Error("Input");

if(m>30||n>20)Error("Mazetoolarge");

for(i=0;i<30;i)

for(j=0;j<20;j)

Maze[j][i]=2;

StartPlace.x=0;

StartPlace.y=0;

EndPlace.x=0;

EndPlace.y=0;

clrscr();BR>for(i=1;i<=n;i)

{

for(j=1;j<=m;j)

{

printf("#");

Maze[i-1][j-1]=0;

}

printf("\n");

}

}

gotoxy(65,5);

printf("''''''''''''''''''''''''''''''''#'''''''''''''''''''''''''''''''':

Wall");

gotoxy(65,7);

printf("Start:

Home");

gotoxy(65,9);

printf("End:

End");

gotoxy(65,11);

printf("DeleteWall:

Del");

gotoxy(65,13);

printf("EnterWall:

Enter");

gotoxy(65,15);

printf("SaveMaze:

F2");

gotoxy(65,17);

printf("Complete:

F9");

gotoxy(65,19);

printf("Exit:

Esc");

gotoxy(4,3);

x=4;y=3;

do

{

c=getch();

switch(c)

{

caseUp:

if(y>3){y--;gotoxy(x,y);}

break;

caseDown:

if(y

break;

caseLeft:

if(x>4){x-=2;gotoxy(x,y);}

break;

caseRight:

if(x<2*m-2){x=2;gotoxy(x,y);}

break;

caseDel:

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('''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''');Maze[y-2][x/2-1]=1;gotoxy(x,y);

break;

caseEnter:

if(y-2==StartPlace.y&&x/2-1==StartPlace.x)break;

if(y-2==EndPlace.y&&x/2-1==EndPlace.x)break;

putch(''''''''''''''''''''''''''''''''#'''''''''''''''''''''''''''''''');Maze[y-2][x/2-1]=0;gotoxy(x,y);

break;

caseHome:

if(Maze[y-2][x/2-1]&&!

b_start)

{

StartPlace.x=x/2-1;

StartPlace.y=y-2;

putch(''''''''''''''''''''''''''''''''S'''''''''''''''''''''''''''''''');

gotoxy(x,y);

b_start=TRUE;

}

break;

caseEnd:

if(Maze[y-2][x/2-1]&&!

b_end)

{

EndPlace.x=x/2-1;

EndPlace.y=y-2;

putch(''''''''''''''''''''''''''''''''E'''''''''''''''''''''''''''''''');

gotoxy(x,y);

b_end=TRUE;

}

break;

caseEsc:

gotoxy(2,22);printf("exit");sleep

(1);exit

(1);

caseF9:

if(b_start&&b_end)flag=TRUE;break;

caseF2:

gotoxy(2,22);

printf("Savename:

");

scanf("%s",savename);

gotoxy(2,22);

if(SaveMaze(savename))printf("SaveOK!

");

elseprintf("Savefail!

");

sleep

(1);

gotoxy(2,22);

printf("");

gotoxy(x,y);

break;

default:

break;

}

}

while(!

flag);

for(i=0;i<30;i)

for(j=0;j<20;j)

{

maze[j][i].=Maze[j][i];

maze[j][i].mark=0;

maze[j][i].foot=0;

}

}

StatusLoadMaze(char*file)

/*Themazehasbeenloaded.*/

{

FILE*fp;

char*buffer;

charch;

inti=0,j,k;

Booleanlen=FALSE,wid=FALSE;

if((fp=fopen(file,"r"))==NULL)

returnERROR;

buffer=(char*)malloc(600*sizeof(char));

ch=fgetc(fp);

while(ch!

=EOF)

{

buffer[i]=ch;

i;

ch=fgetc(fp);

}

m=30;n=20;

for(i=0;i<600;i)

{

j=i/30;k=i0;

if(buffer[i]==''''''''''''''''''''''''''''''''2''''''''''''''''''''''''''''''''&&!

len){m=i;len=TRUE;}

if(k==0&&buffer[i]==''''''''''''''''''''''''''''''''2''''''''''''''''''''''''''''''''&&!

wid){n=j;wid=TRUE;}

switch(buffer[i])

{

case''''''''''''''''''''''''''''''''0'''''''''''''''''''''''''''''''':

Maze[j][k]=0;break;

case''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''':

Maze[j][k]=1;break;

case''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''':

Maze[j][k]=2;break;

case''''''''''''''''''''''''''''''''3'''''''''''''''''''''''''''''''':

Maze[j][k]=1;

StartPlace.x=k;

StartPlace.y=j;

b_start=TRUE;

break;

case''''''''''''''''''''''''''''''''4'''''''''''''''''''''''''''''''':

Maze[j][k]=1;

EndPlace.x=k;

EndPlace.y=j;

b_end=TRUE;

break;

default:

break;

}

}

fclose(fp);

clrscr();

for(i=0;i<30;i)

for(j=0;j<20;j)

{

maze[j][i].=Maze[j][i];

maze[j][i].foot=0;

maze[j][i].mark=0;

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

{

gotoxy(2*i2,j2);

putch(''''''''''''''''''''''''''''''''#'''''''''''''''''''''''''''''''');

}

}

gotoxy(2*StartPlace.x2,StartPlace.y2);

putch(''''''''''''''''''''''''''''''''S'''''''''''''''''''''''''''''''');

gotoxy(2*EndPlace.x2,EndPlace.y2);

putch(''''''''''''''''''''''''''''''''E'''''''''''''''''''''''''''''''');

returnOK;

}

StatusSaveMaze(char*filename)

/*Themazehasbeensaved.*/

{

FILE*fp;

char*buffer;

inti,j,k;

fp=fopen(filename,"wb");

buffer=(char*)malloc(600*sizeof(char));

for(i=0;i<600;i)

{

j=i/30;k=i0;

switch(Maze[j][k])

{

case0:

buffer[i]=''''''''''''''''''''''''''''''''0'''''''''''''''''''''''''''''''';break;

case1:

buffer[i]=''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''';break;

case2:

buffer[i]=''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''';break;

default:

Error("Write");break;

}

if(k==StartPlace.x&&j==StartPlace.y)buffer[i]=''''''''''''''''''''''''''''''''3'''''''''''''''''''''''''''''''';

if(k==EndPlace.x&&j==EndPlace.y)buffer[i]=''''''''''''''''''''''''''''''''4'''''''''''''''''''''''''''''''';

}

fwrite(buffer,600,1,fp);

free(buffer);

fclose(fp);

returnOK;

}

voidError(char*message)

{

clrscr();

fprintf(serr,"Error:

%s\n",message);

exit

(1);

}/*Error*/

StatusInitStack(Stack*s)

/*Thestackshasbeencreatedandisinitializedtobeempty.*/

{

s->base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));

if(!

s->base)Error("Overflow");

s->top=s->base;

s->stacksize=STACK_INIT_SIZE;

returnOK;

}/*InitStack*/

StatusDesoyStack(Stack*s)

/*Thestackshasbeendesoyed.*/

{

s->top=NULL;

s->stacksize=0;

free(s->base);

s->base=NULL;

returnOK;

}/*DesoyStack*/

StatusClearStack(Stack*s)

/*Thestackhasbeencleartobemaximum.*/

{

s->top=s->base;

s->stacksize=STACK_INIT_SIZE;

returnOK;

}/*ClearStack*/

BooleanStackEmpty(Stack*s)

/*Checkifthestacksisempty.*/

{

if(s->top==s->base)returnTRUE;

elsereturnFALSE;

}/*StackEmpty*/

intStackLength(Stack*s)

/*Gainthelengthofthestacks.*/

{

if(s->top>s->base)return(int)(s->top-s->base);

elsereturn0;

}/*StackLength*/

StatusPush(Stack*s,SElemTypee)

/*Theelementehasbeenpushedintothestacks.*/

{

if(s->top-s->base>=s->stacksize)

{

s->base=(SElemType*)realloc(s->base,

(s->stacksizeSTACKINCREMENT)*sizeof(SElemType));

if(!

s->base)Error("Overflow");

s->top=s->bases->stacksize;

s->stacksize=STACKINCREMENT;

}

*s->top=e;

returnOK;

}/*Push*/

SElemTypePop(Stack*s,SElemTypee)

/*Theelementehasbeenremovedfromthestacks.*/

{

if(s->top==s->base)Error("Pop");

e=*--s->top;

returne;

}/*Pop*/

StatusGetTop(Stack*s,SElemType*e)

/*Theelementehasgottothetopofthestacks.*/

{

if(s->top==s->base)Error("GetTop");

*e=*(s->top-1);

returnOK;

}/*GetTop*/

/*Traversethestacksusing''''''''''''''''''''''''''''''''visiting''''''''''''''''''''''''''''''''function.*/

/*StatusStackTraverse(Stack*s,Status(*visit)(SElemType*se))

{

SElemTypep;

intresult;

if(s->top==s->base)returnERROR;

p=s->base;

while(!

(p==s->top))

{

result=(*visit)(p);

p;

}

returnOK;

}*/

BooleanPass(PosTypecurpos)

/*Checkifthecurrentpositioncanbepassed.*/

{

if(maze[curpos.x][curpos.y].==1&&

maze[curpos.x][curpos.y].foot==0&&maze[curpos.x][curpos.y].mark==0)

returnTRUE;

elsereturnFALSE;

}/*Pass*/

voidMarkPrint(PosTypeseat)

/*Markthepositionseat.*/

{

maze[seat.x]

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2