#include<stdio.h>#include<string.h>#include<windows.h>#include<conio.h>#define N 9#define M 3int level=0;int x,y;int map[M][N][N]; void print();//打印函数声明void menu();//展示菜单void find();//查找void import();//导入地图数据int move();//移动函数int Up();//上移int Down();//下移int Right();//右移int Left();//左移int main()//主函数{ int flag=0; menu(); while(1) { flag=move(); if(flag==1) return 0; } return 0;}void import()//将文件中的数组数据导入{ int i,j; FILE* fp=fopen("e:\\migong.txt","r"); if(fp==NULL) { printf("无文件"); } for(i=0;i<N;i++) { for(j=0;j<M;j++) { fscanf(fp,"%d",&map[level][M][M]); } fscanf(fp,"\n"); } fclose(fp); }void find()//找到开始的位置{ int i=0,j=0; for(i=0;i<N;i++) { for(j=0;j<N;j++) { if(map[level][i][j]==3)//找到位置后,赋值给x y { x=i; y=j; break; } } }}int move()//移动函数{ int flag=0; while(1) { flag=0; import(); find(); print(); switch(getch()) { case 'w'://输入w时,向上移动 flag=Up(); break; case 'a'://输入a时,向左移动 flag=Left(); break; case 's'://输入s时,向下移动 flag=Down(); break; case 'd'://输入d时,向右移动 flag=Right(); break; } if(flag==1) { if(level==M-1) { MessageBox(0,TEXT("恭喜你完成了所有关卡"),TEXT("恭喜"),NULL); return 1; } else { MessageBox(0,TEXT("恭喜你通过了这一关"),TEXT("恭喜"),NULL); level++; } } }}int Up()//向上移动{ if(x!=0) { if(map[level][x-1][y]==1) { map[level][x-1][y]=3; map[level][x][y]=1; } else if(map[level][x-1][y]==4) { return 1; } } return 0;}int Down()//向下移动{ if(x!=N-1) { if(map[level][x+1][y]==1) { map[level][x+1][y]=3; map[level][x][y]=1; } else if(map[level][x+1][y]==4) { return 1; } } return 0;}int Right()//向右移动{ if(y!=N-1) { if(map[level][x][y+1]==1) { map[level][x][y+1]=3; map[level][x][y]=1; } else if(map[level][x][y+1]==4) { return 1; } } return 0;}int Left()//向左移动{ if(y!=0) { if(map[level][x][y-1]==1) { map[level][x][y-1]=3; map[level][x][y]=1; } else if(map[level][x][y-1]==4) { return 1; } } return 0;}void print()//打印函数{ int i=0,j=0; system("cls"); for(i=0;i<N;i++) { for(j=0;j<N;j++) { if(map[level][i][j]==0) printf("■");//绘制围墙 else if(map[level][i][j]==1)//绘制通道 printf(" "); else if(map[level][i][j]==3)//绘制移动的人 printf("○"); else if(map[level][i][j]==4)//绘制终点