主页
搜索
最近更新
数据统计
申请密钥
批量保存
开发版网站(新前端)
系统公告
1
/
1
请查看完所有公告
拨开迷雾1.4(更新了)
最后更新于 2025-08-27 18:49:58
作者
qqqaaazzz_qwq
分类
个人记录
复制 Markdown
查看原文
转到新前端
删除文章
更新内容
圆形是“你”,空心正方形是墙,实心正方形是雾,星星是终点,上下左右移动“你”。更新内容: 1. 基本不闪屏了(还有一点闪屏) 2. 有金币了,金币有音效,但还是没有怪物 3. 优化了体验 4. 本代码开源,但开源必须在博客下方留言,并标明原博客。 ```cpp #include <bits/stdc++.h> #include <windows.h> #include <queue> #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) using namespace std; char a[102][102]; char ans[102][102]; int n=18,m=18;//参数区 迷宫大小 int sx=1,sy=1;//参数区 起点位置(终点不固定) int ex,ey; int f,bstep,coin,boin; bool win = false; int fx[] = {0,0,1,-1}; int fy[] = {1,-1,0,0}; bool ok=false; void dfs(int x,int y,int fxx,int num) { a[x][y]='.'; for (int i=0;i<4;i++) { if(i==fxx) continue; int dx=x+fx[i]; int dy=y+fy[i]; if(dx>=1&&dx<=n&&dy>=1&&dy<=m) { if(a[dx][dy]=='.') { a[x][y]='#'; return; } } } if(num==f) { ex=x; ey=y; ok=true; return; } int i=rand()%4; for (int p=1;p<=4;p++) { if(i==fxx) { i = (i+1)%4; continue; } int dx=x+fx[i]; int dy=y+fy[i]; if(dx>=1&&dx<=n&&dy>=1&&dy<=m) { if(i==0) dfs(dx,dy,1,num+1); else if(i==1) dfs(dx,dy,0,num+1); else if(i==2) dfs(dx,dy,3,num+1); else dfs(dx,dy,2,num+1); if(ok) return; } i = (i+1)%4; } ex=x; ey=y; ok=true; return; } struct Pos { int x,y; Pos(int _x,int _y) { x=_x; y=_y; } }; void wudao(int x,int y) { if(rand()%4==1) return; queue<Pos> q; q.push(Pos(x,y)); int X,Y; while(!q.empty()) { X=q.front().x; Y=q.front().y; q.pop(); for (int i=0;i<4;i++) { if(rand()%5==0) continue; int dx=X+fx[i]; int dy=Y+fy[i]; if(dx>=1&&dx<=n&&dy>=1&&dy<=m&&a[dx][dy]=='#') { int k; bool g=false; if(i==0) k=1; else if(i==1) k=0; else if(i==2) k=3; else k=2; for (int i=0;i<4;i++) { if(i==k) continue; int ddx=dx+fx[i]; int ddy=dy+fy[i]; if(ddx>=1&&ddx<=n&&ddy>=1&&ddy<=m) { if(a[ddx][ddy]!='#') { g=true; break; } } } if(!g) { q.push(Pos(dx,dy)); a[dx][dy] = '*'; } } } } return; } void dawudao(int x,int y) { int gx=x,gy=y; wudao(gx,gy); bool p=1; while(p) { for (int i=0;i<4;i++) { int dx=gx+fx[i]; int dy=gy+fy[i]; if(dx>=1&&dx<=n&&dy>=1&&dy<=m) { if(ans[dx][dy]=='F'){bstep++;p=0;break;} else if(ans[dx][dy]=='.') { bstep++; wudao(dx,dy); gx=dx; gy=dy; ans[gx][gy] = '&'; break; } } } } return; } int q(int x,int y) { if(a[x][y]=='S'||a[x][y]=='F'||a[x][y]=='#') return 0; int k=0; for (int i=0;i<4;i++){ int dx=x+fx[i]; int dy=y+fy[i]; if(a[dx][dy]=='#') k++; } return k; } //新解密游戏toLEVEL9:paste/rrly4lwo void putcoin() { for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) { if(q(i,j)==3) { if(rand()%3==0) { a[i][j]='$'; boin++; } } } } return; } void print() { bool c=false; for (int i=1;i<=m+2;i++) { printf("□"); } printf("\n"); for (int i=1;i<=n;i++) { printf("□"); for (int j=1;j<=m;j++) { if((abs(i-sx)>2||abs(j-sy)>2)&&win==false) { cout << "■"; continue; } if(i==sx&&j==sy) { printf("●"); if(a[sx][sy]=='$') { coin++; a[sx][sy]='.'; c=true; } } else if(a[i][j]=='.') { printf(" "); } else if(a[i][j]=='*') { printf(" "); } else if(a[i][j]=='S') { printf(" "); } else if(a[i][j]=='#') { printf("□"); } else if(a[i][j]=='F') { printf("★"); } else if(a[i][j]=='$') { printf("$"); } } printf("□"); printf("\n"); } for (int i=1;i<=m+2;i++) { printf("□"); } printf("\n"); if(c) { Beep(620,60); Beep(1010,60); } return; } void gotoxy(int x,int y) { COORD pos = {x,y}; HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOut,pos); return; } int main() { cout << "加载中......"<<endl<<"liuhl_weifang制作"; srand(time(0)); memset(a,'#',sizeof(a)); f = n*m; dfs(sx,sy,-1,1);//生成路 a[sx][sy]='S'; a[ex][ey]='F'; for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++){ ans[i][j] = a[i][j]; } } dawudao(sx,sy);//误导 putcoin(); Sleep(500); gotoxy(0,0); int step=0; print(); while(1) { if(KEY_DOWN(VK_DOWN)) { gotoxy(0,0); int dx=sx+1; int dy=sy; if(dx>=1&&dx<=n&&dy>=1&&dy<=m&&a[dx][dy]!='#') { step++; sx=dx; sy=dy; } print(); while(KEY_DOWN(VK_DOWN)) Sleep(0.1); } else if(KEY_DOWN(VK_UP)) { gotoxy(0,0); int dx=sx-1; int dy=sy; if(dx>=1&&dx<=n&&dy>=1&&dy<=m&&a[dx][dy]!='#') { step++; sx=dx; sy=dy; } print(); while(KEY_DOWN(VK_UP)) Sleep(0.1); } else if(KEY_DOWN(VK_LEFT)) { gotoxy(0,0); int dx=sx; int dy=sy-1; if(dx>=1&&dx<=n&&dy>=1&&dy<=m&&a[dx][dy]!='#') { step++; sx=dx; sy=dy; } print(); while(KEY_DOWN(VK_LEFT)) Sleep(0.1); } else if(KEY_DOWN(VK_RIGHT)) { gotoxy(0,0); int dx=sx; int dy=sy+1; if(dx>=1&&dx<=n&&dy>=1&&dy<=m&&a[dx][dy]!='#') { step++; sx=dx; sy=dy; } print(); while(KEY_DOWN(VK_RIGHT)) Sleep(0.1); } if(sx==ex&&sy==ey) { win=true; gotoxy(0,0); print(); cout <<"你赢了!"<<endl<<"你用了"<<step<<"步,得到了"<<coin<<"个金币,一共有"<<boin<<"个金币"; return 0; } } cout << endl; return 0; } ```
正在渲染内容...
点赞
0
收藏
0