1走迷宫
#include <stdio.h> #include<getch.h> #include<time.h> #include<stdlib.h> int main(int argc,const char* argv[]) { ?? ?//定义迷宫地图 ?? ?char maze[10][10]={ ?? ??? ?{1,1,1,1,1,1,1,1,1,1}, ?? ??? ?{1,1,0,0,0,0,0,0,1,1}, ?? ??? ?{1,1,0,1,1,1,1,0,1,1}, ?? ??? ?{1,1,0,1,2,1,1,0,1,1}, ?? ??? ?{1,1,0,1,0,1,1,0,0,0}, ?? ??? ?{1,1,0,0,0,0,0,1,1,1}, ?? ??? ?{1,1,1,1,0,1,1,1,1,1}, ?? ??? ?{1,1,1,1,0,0,1,1,1,1}, ?? ??? ?{1,1,1,1,1,1,1,1,1,1}, ?? ??? ?{1,1,1,1,1,1,1,1,1,1} ?? ?}; ?? ?//定义老鼠坐标 ?? ?int mouse_x=3,mouse_y=4; ?? ?//获取开始时间 ?? ?time_t start_time=time(NULL); ?? ?for(;;) ?? ?{ ?? ??? ?//清理屏幕 ?? ??? ?system("clear"); ?? ??? ?for(int i=0;i<10;i++) ?? ??? ?{ ?? ??? ??? ?for(int j=0;j<10;j++) ?? ??? ??? ?{ ?? ??? ??? ??? ?switch(maze[i][j]) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?case 0:printf(" ?");break; ?? ??? ??? ??? ?case 1:printf("# ");break; ?? ??? ??? ??? ??? ?case 2:printf("@ ");break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?printf("\n"); ?? ??? ?} ?? ??? ?//判断是否到达出口 ?? ??? ?if(4==mouse_x&&mouse_y==9) ?? ??? ?{ ?? ??? ??? ?time_t ending_time=time(NULL); ?? ??? ??? ?printf("耗时%lu秒",ending_time-start_time); ?? ??? ??? ?return 0; ?? ??? ?} ?? ??? ?//获取方向键并处理 ?? ??? ?switch(getch()) ?? ??? ?{ ?? ??? ??? ?printf("%d %d",mouse_x,mouse_y); ?? ??? ??? ?case 183: ?? ??? ??? ?{
?? ??? ??? ??? ?if(maze[mouse_x-1][mouse_y]==0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?maze[mouse_x][mouse_y]=0; ?? ??? ??? ??? ??? ?mouse_x=mouse_x-1; ?? ??? ??? ??? ??? ?maze[mouse_x][mouse_y]=2; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 184: ?? ??? ??? ?{ ?? ??? ??? ??? ?if(maze[mouse_x+1][mouse_y]==0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?maze[mouse_x+1][mouse_y]=2; ?? ??? ??? ??? ??? ?maze[mouse_x][mouse_y]=0; ?? ??? ??? ??? ??? ?mouse_x=mouse_x+1;mouse_y=mouse_y; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 185: ?? ??? ??? ?{ ?? ??? ??? ??? ?if(maze[mouse_x][mouse_y+1]==0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?maze[mouse_x][mouse_y+1]=2; ?? ??? ??? ??? ??? ?maze[mouse_x][mouse_y]=0; ?? ??? ??? ??? ??? ?mouse_x=mouse_x;mouse_y=mouse_y+1; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 186: ?? ??? ??? ?{ ?? ??? ??? ??? ?if(maze[mouse_x][mouse_y-1]==0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?maze[mouse_x][mouse_y-1]=2; ?? ??? ??? ??? ??? ?maze[mouse_x][mouse_y]=0; ?? ??? ??? ??? ??? ?mouse_x=mouse_x;mouse_y=mouse_y-1; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} }
2推箱子
#include <stdio.h> #include<getch.h> #include<stdlib.h> int main(int argc,const char* argv[]) { ?? ?int cnt=0; ?? ?char box[8][8]={ ?? ??? ?{0,0,1,1,1,1,0,0}, ?? ??? ?{0,0,1,4,4,1,0,0}, ?? ??? ?{0,1,1,0,4,1,1,0}, ?? ??? ?{0,1,0,0,3,4,1,0}, ?? ??? ?{1,1,0,3,0,0,1,1}, ?? ??? ?{1,0,0,1,3,3,0,1}, ?? ??? ?{1,0,0,2,0,0,0,1}, ?? ??? ?{1,1,1,1,1,1,1,1} ?? ?}; ?? ?int man_x=6,man_y=3; ?? ?for(;;) ?? ?{ ?? ??? ?if(box[1][3]==0) box[1][3]=4; ?? ??? ?if(box[1][4]==0) box[1][4]=4; ?? ??? ?if(box[2][4]==0) box[2][4]=4; ?? ??? ?if(box[3][5]==0) box[3][5]=4; ?? ??? ?system("clear"); ?? ??? ?for(int i=0;i<8;i++) ?? ??? ?{ ?? ??? ??? ?for(int j=0;j<8;j++) ?? ??? ??? ?{ ?? ??? ??? ??? ?switch(box[i][j]) ?? ??? ? ?? ??? ?{ ?? ??? ??? ??? ??? ?case 0:printf(" ? ");break; ?? ??? ??? ??? ??? ?case 1:printf(" # ");break; ?? ??? ??? ??? ??? ?case 2:printf(" * ");break; ?? ??? ??? ??? ??? ?case 3:printf(" @ ");break; ?? ??? ??? ??? ??? ?case 4:printf(" + ");break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?printf("\n"); ?? ??? ?} ?? ??? ?//panduanjieshu ?? ??? ?if(box[1][3]==3&&box[1][4]==3&&box[2][4]==3&&box[3][5]==3) ?? ??? ?{ ?? ??? ??? ?printf("一共走了%d步\n",cnt); ?? ??? ??? ?return 0; ?? ??? ?} ?? ??? ?//huoqu ?? ??? ?switch(getch()) ?? ??? ?{ ?? ??? ??? ?case 183: ?? ??? ??? ?{ ?? ??? ??? ??? ?if(box[man_x-1][man_y]==3&&box[man_x-2][man_y]==0||box[man_x-1][man_y]==3&&box[man_x-2][man_y]==4) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?box[man_x][man_y]=0; ?? ??? ??? ??? ??? ?box[man_x-1][man_y]=2; ?? ??? ??? ??? ??? ?box[man_x-2][man_y]=3; ?? ??? ??? ??? ??? ?man_x=man_x-1; ?? ??? ??? ??? ??? ?cnt++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if(box[man_x-1][man_y]==0||box[man_x-1][man_y]==4) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?box[man_x][man_y]=0; ?? ??? ??? ??? ??? ?box[man_x-1][man_y]=2; ?? ??? ??? ??? ??? ?man_x=man_x-1; ?? ??? ??? ??? ??? ?cnt++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 184: ?? ??? ??? ?{ ?? ??? ??? ??? ?if(box[man_x+1][man_y]==3&&box[man_x+2][man_y]==0||box[man_x+1][man_y]==3&&box[man_x+2][man_y]==4) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?box[man_x][man_y]=0; ?? ??? ??? ??? ??? ?box[man_x+1][man_y]=2; ?? ??? ??? ??? ??? ?box[man_x+2][man_y]=3; ?? ??? ??? ??? ??? ?man_x=man_x+1; ?? ??? ??? ??? ??? ?cnt++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if(box[man_x+1][man_y]==0||box[man_x+1][man_y]==4) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?box[man_x][man_y]=0; ?? ??? ??? ??? ??? ?box[man_x+1][man_y]=2; ?? ??? ??? ??? ??? ?man_x=man_x+1; ?? ??? ??? ??? ??? ?cnt++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 185: ?? ??? ??? ?{ ?? ??? ??? ??? ?if(box[man_x][man_y+1]==3&&box[man_x][man_y+2]==0||box[man_x][man_y+1]==3&&box[man_x][man_y+2]==4) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?box[man_x][man_y]=0; ?? ??? ??? ??? ??? ?box[man_x][man_y+1]=2; ?? ??? ??? ??? ??? ?box[man_x][man_y+2]=3; ?? ??? ??? ??? ??? ?man_y=man_y+1; ?? ??? ??? ??? ??? ?cnt++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if(box[man_x][man_y+1]==0||box[man_x][man_y+1]==4) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?box[man_x][man_y]=0; ?? ??? ??? ??? ??? ?box[man_x][man_y+1]=2; ?? ??? ??? ??? ??? ?man_y=man_y+1; ?? ??? ??? ??? ??? ?cnt++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?case 186: ?? ??? ??? ?{ ?? ??? ??? ??? ?if(box[man_x][man_y-1]==3&&box[man_x][man_y-2]==0||box[man_x][man_y-1]==3&&box[man_x][man_y-2]==4) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?box[man_x][man_y]=0; ?? ??? ??? ??? ??? ?box[man_x][man_y-1]=2; ?? ??? ??? ??? ??? ?box[man_x][man_y-2]=3; ?? ??? ??? ??? ??? ?man_y=man_y-1; ?? ??? ??? ??? ??? ?cnt++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if(box[man_x][man_y-1]==0||box[man_x][man_y-1]==4) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?box[man_x][man_y]=0; ?? ??? ??? ??? ??? ?box[man_x][man_y-1]=2; ?? ??? ??? ??? ??? ?man_y=man_y-1; ?? ??? ??? ??? ??? ?cnt++; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} }
|