自制C++游戏 迷宫
1 #include<bits/stdc++.h> 2 #include<conio.h> 3 using namespace std; 4 char mg[17][17]={ 5 "# ##############", 6 "# # # # # ###", 7 "## # # ### ##", 8 "### ### ##", 9 "######## ###", 10 "### ## ###", 11 "### # # # # ##", 12 "### # ### ####", 13 "#### ## # # ##", 14 "### ## ##### ##", 15 "### # # ##", 16 "##### ### ###", 17 "## # ##########", 18 "## #####", 19 "########## #", 20 "############## #" 21 }; 22 double start,end; 23 int x=0;int y=1; 24 void disp(){ 25 system("cls"); 26 for(int i=0;i<16;i++){ 27 for(int j=0;j<16;j++){ 28 printf("%c",mg[i][j]); 29 } 30 printf("\n"); 31 } 32 printf("x..%d,y..%d",x,y); 33 } 34 void win(){ 35 end=clock(); 36 system("cls"); 37 printf("YOU WIN!\nTIME:%.2f SECONDS",((double)(end-start)/CLK_TCK)); 38 } 39 int main(){ 40 start=clock(); 41 mg[x][y]='o'; 42 char temp; 43 while(x!=15||y!=14){ 44 disp(); 45 temp=getch(); 46 if(temp=='W'){ 47 if(x!=0&&mg[x-1][y]!='#'){ 48 mg[x][y]=' ';--x;mg[x][y]='o'; 49 } 50 } 51 if(temp=='A'){ 52 if(y!=0&&mg[x][y-1]!='#'){ 53 mg[x][y]=' ';--y;mg[x][y]='o'; 54 } 55 } 56 if(temp=='S'){ 57 if(x!=15&&mg[x+1][y]!='#'){ 58 mg[x][y]=' ';++x;mg[x][y]='o'; 59 } 60 } 61 if(temp=='D'){ 62 if(y!=15&&mg[x][y+1]!='#'){ 63 mg[x][y]=' ';++y;mg[x][y]='o'; 64 } 65 } 66 } 67 win(); 68 }
解释:
把迷宫保存在数组里。windows.h和conio.h都是常用的头文件,getch()表示输入一个字符但是不在屏幕上显示这个字符。我们不断读入字符,根据WASD分别判断是往上、下、左、右走,先判断要走的方向是否是墙(用#号表示),如果不是,那么就移动,直到终点结束循环。
运行效果截图: