-
个人简介
https://liferestart.syaro.io/public/index.html 人身重开模拟器
#include<bits/stdc++.h> #include<windows.h> #include<conio.h> using namespace std; int mat[505][505]; int n,m; int ix,iy,ex,ey,gx1,gy1,gx2,gy2,gx3,gy3,gx4,gy4; int cnt = 0; void HideCursor() { CONSOLE_CURSOR_INFO cursor_info ={1,0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); } void print_maze(); void gz(int &x,int &y) { int dx[4]={0,0,-1,1}; int dy[4]={1,-1,0,0}; int dir[4]={0,1,2,3}; random_shuffle(dir,dir+4);//打乱数组 mat[x][y] = 1; // Sleep(100); for(int i=0;i<4;i++) { int xx = x + dx[dir[i]]; int yy = y + dy[dir[i]]; if(xx>1&&xx<n&&yy>1&&yy<m) { if(mat[xx][yy]==1) { x = xx; y = yy; mat[x][y] = 6; return ; } } } } void create_maze(int x,int y) { int dx[4]={0,0,-1,1}; int dy[4]={1,-1,0,0}; int dir[4]={0,1,2,3}; random_shuffle(dir,dir+4);//打乱数组 mat[x][y] = 1; print_maze(); // Sleep(100); for(int i=0;i<4;i++) { int xx = x + dx[dir[i]]; int yy = y + dy[dir[i]]; if(xx>1&&xx<n&&yy>1&&yy<m) { if(mat[xx+1][yy]+mat[xx-1][yy]+mat[xx][yy+1]+mat[xx][yy-1]<=1) { if(mat[xx][yy]==0) { create_maze(xx,yy); } } } } } void print_maze() { // system("cls"); SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){0,0}); cnt++; if(cnt == 6) { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(mat[i][j]==4) { mat[i][j]=5; if(i!=1)mat[i-1][j]=5; if(i!=n)mat[i+1][j]=5; if(j!=1)mat[i][j-1]=5; if(j!=m)mat[i][j+1]=5; } } // cout << endl; } } if(cnt == 8) { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(mat[i][j]==5) { mat[i][j]=1; if(i!=1)mat[i-1][j]=1; if(i!=n)mat[i+1][j]=1; if(j!=1)mat[i][j-1]=1; if(j!=m)mat[i][j+1]=1; } } } cnt = 0; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(mat[i][j]==1) cout << " "; else if(mat[i][j]==0) { // system("color 5"); cout << "[]"; } else if(mat[i][j]==2) { // system("color 6"); cout << "我"; } else if(mat[i][j]==3) { // system("color 7"); cout << "$$"; } else if(mat[i][j]==4) { // system("color 8"); cout << "蛋"; } else if(mat[i][j]==5) { // system("color 9"); cout << "轰"; } else if(mat[i][j]==6) { // system("color A"); cout << "鬼"; } // else if(mat[i][j]==5) cout << "蛋"; } cout << endl; } } void print_maze2() { // system("cls"); SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){0,0}); cnt++; if(cnt == 6) { int zdfw=3;//炸弹范围 for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(mat[i][j]==4) { mat[i][j]=5; for(int p=i-zdfw;p<=i+zdfw;p++) { for(int k=j-zdfw;k<=j+zdfw;k++) { if((i==p||j==k)&&(p>1&&p<n&&k>1&&k<=m&&mat[p][k]!=0)) { if(gx1==p&&gy1==k) mat[gx1][gy1]=1,gx1=n+1,gy1=m+1; if(gx2==p&&gy2==k) mat[gx2][gy2]=1,gx2=n+1,gy2=m+1; if(gx3==p&&gy3==k) mat[gx3][gy3]=1,gx3=n+1,gy3=m+1; if(gx4==p&&gy4==k) mat[gx4][gy4]=1,gx4=n+1,gy4=m+1; mat[p][k] = 5; } } } } } // cout << endl; } } if(cnt == 8) { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(mat[i][j]==5) { mat[i][j]=1; } } } cnt = 0; } int fw=8; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(i>=ix-fw&&i<=ix+fw&&j>=iy-fw&&j<=iy+fw) { if(mat[i][j]==1) cout << " "; else if(mat[i][j]==0) cout << "[]"; else if(mat[i][j]==2) cout << "我"; else if(mat[i][j]==3) cout << "$$"; else if(mat[i][j]==4) cout << "蛋"; else if(mat[i][j]==5) cout << "轰"; else if(mat[i][j]==6) cout << "鬼"; } else { cout << " "; } } cout << endl; } } void init() { memset(mat,0,sizeof(mat)); system("cls"); cout << "请输入地图大小n*m" << endl; cin >> n >> m; HideCursor(); create_maze(n/2,m/2); print_maze(); } int main() { srand(time(0)); HideCursor(); init(); ix = rand()%(3)+2; iy = rand()%(3)+2; ex = rand()%(3)+n-4; ey = rand()%(3)+m-4; gx1 = rand()%n; gy1 = rand()%m; gx2 = rand()%n; gy2 = rand()%m; gx3 = rand()%n; gy3 = rand()%m; gx4 = rand()%n; gy4 = rand()%m; mat[ix][iy] = 2; mat[ex][ey] = 3; print_maze(); int step = 0; int dfx = 1; while(1) { char dir = getch(); gz(gx1,gy1); gz(gx2,gy2); gz(gx3,gy3); gz(gx4,gy4); if(dir==72&&mat[ix-1][iy]!=0) { mat[ix][iy] = 1; mat[ix-1][iy] = 2; ix--; ++step; dfx = 1; } if(dir==80&&mat[ix+1][iy]!=0) { mat[ix][iy] = 1; mat[ix+1][iy] = 2; ix++; ++step; dfx = 2; } if(dir==75&&mat[ix][iy-1]!=0) { mat[ix][iy] = 1; mat[ix][iy-1] = 2; iy--; ++step; dfx = 3; } if(dir==77&&mat[ix][iy+1]!=0) { mat[ix][iy] = 1; mat[ix][iy+1] = 2; iy++; ++step; dfx = 4; } if(dir==' ') { cnt= 0; if(dfx == 1 && mat[ix-1][iy]==1 )mat[ix-1][iy] = 4; if(dfx == 2 && mat[ix+1][iy]==1)mat[ix+1][iy] = 4; if(dfx == 3 && mat[ix][iy-1]==1)mat[ix][iy-1] = 4; if(dfx == 4 && mat[ix][iy+1]==1)mat[ix][iy+1] = 4; } print_maze2(); if(mat[ix][iy]==5) { cout << "被自己的炸弹干掉了!!!" << endl; char c= getch(); return 0; } if(ix==gx1&&iy==gy1) { cout << "见鬼了" << endl; char c= getch(); return 0; } if(ix==gx2&&iy==gy2) { cout << "见鬼了" << endl; char c= getch(); return 0; } if(ix==gx3&&iy==gy3) { cout << "见鬼了" << endl; char c= getch(); return 0; } if(ix==gx4&&iy==gy4) { cout << "见鬼了" << endl; char c= getch(); return 0; } if(ix==ex&&iy==ey) { break; } } cout << "恭喜你找到了宝藏,共用了" << step << " 步"<< endl; cout << "按任意键退出程序"<<endl; char c= getch(); return 0; }
-
最近活动