1 #include<iostream>
2 #include<windows.h>
3 #include"GotoXY.h"
4 #include <conio.h>
5 #include <stdlib.h>
6 #include <time.h>
7 using namespace std;
8 void help();
9 void migong();
10 void m();
11 void help()
12 {
13 char ch2;
14 system("cls");
15 cout<<"操作说明:"<<endl;
16 cout<<endl;
17 cout<<"移动说明:"<<endl;
18 cout<<"w-向上 s-向下 a-向左 d-向右"<<endl;
19 cout<<endl;
20 cout<<"标识说明:"<<endl;
21 cout<<"&- @-玩家 #-墙 $-钥匙 ^-地刺 %-传送门 0-可以被炸开的墙"<<endl;
22 cout<<endl;
23 cout<<"操作说明:"<<endl;
24 cout<<"x-爆破(需要) 移动至物品上方-捡起物品 拥有钥匙后接近传送门附近-传送(按任意键继续)"<<endl;
25 cout<<endl;
26 cout<<"注意事项:"<<endl;
27 cout<<"踩到地刺会s哦,请小心"<<endl;
28 cout<<"按任意键返回"<<endl;
29 ch2=_getch();
30 m();
31 }
32 void migong()
33 {
34 system("cls");
35 char ch;
36 srand(time(NULL));
37 int k;
38 int z=0;
39 int key=0;
40 int zx[100];
41 int zy[100];
42 int gq=0;
43 GotoXY(60,5);
44 cout<<"TNT x 0";
45 while (1)
46 {
47 int map[10][6][10]={
48 {
49 {1,1,1,1,1,1,1,1,1,1},
50 {1,0,3,0,4,0,1,1,0,1},
51 {1,0,0,0,0,1,1,1,2,1},
52 {1,0,0,0,0,1,1,1,0,1},
53 {1,0,0,0,0,0,0,0,0,1},
54 {1,1,1,1,1,1,1,1,1,1}
55 },
56 {
57 {1,1,1,1,1,1,1,1,1,1},
58 {1,0,0,0,0,0,1,0,2,1},
59 {1,0,1,0,1,1,1,0,0,1},
60 {1,0,1,0,0,0,0,0,0,1},
61 {1,3,1,0,0,0,0,4,0,1},
62 {1,1,1,1,1,1,1,1,1,1}
63 },
64 {
65 {1,1,1,1,1,1,1,1,1,1},
66 {1,0,0,0,0,0,0,2,0,1},
67 {1,0,0,3,0,0,0,0,0,1},
68 {1,0,0,0,0,0,0,0,6,1},
69 {1,0,0,5,0,0,0,6,4,1},
70 {1,1,1,1,1,1,1,1,1,1}
71 },
72 {
73 {1,1,1,1,1,1,1,1,1,1},
74 {1,3,1,0,0,0,1,7,4,1},
75 {1,0,1,0,1,0,1,0,0,1},
76 {1,0,1,0,1,2,1,0,7,1},
77 {1,0,0,0,1,0,0,0,7,1},
78 {1,1,1,1,1,1,1,1,1,1}
79 },
80 {
81 {1,1,1,1,1,1,1,1,1,1},
82 {1,1,2,1,1,0,0,0,1,1},
83 {1,1,0,1,1,0,1,0,1,1},
84 {1,0,0,0,0,0,1,0,1,1},
85 {1,3,1,1,1,1,1,0,4,1},
86 {1,1,1,1,1,1,1,1,1,1}
87 },
88 {
89 {1,1,1,1,1,1,1,1,1,1},
90 {1,0,0,0,0,0,0,2,1,1},
91 {1,6,6,6,6,0,1,0,1,1},
92 {1,6,3,5,6,0,1,0,0,1},
93 {1,6,6,6,6,0,0,0,4,1},
94 {1,1,1,1,1,1,1,1,1,1}
95 },
96 {
97 {1,1,1,1,1,1,1,1,1,1},
98 {1,5,0,0,0,0,0,3,0,1},
99 {1,6,6,6,0,0,0,0,0,1},
100 {1,6,2,6,0,0,0,0,0,1},
101 {1,6,6,6,0,0,0,0,4,1},
102 {1,1,1,1,1,1,1,1,1,1}
103 },
104 {
105 {1,1,1,1,1,1,1,1,1,1},
106 {1,2,6,0,0,0,0,6,4,1},
107 {1,7,6,0,0,0,0,6,5,1},
108 {1,6,6,0,6,6,6,6,6,1},
109 {1,0,0,0,6,3,5,0,0,1},
110 {1,1,1,1,1,1,1,1,1,1}
111 },
112 {
113 {1,1,1,1,1,1,1,1,1,1},
114 {1,0,0,0,1,1,0,0,0,1},
115 {1,2,0,0,7,7,0,0,3,1},
116 {1,0,0,0,7,7,0,0,4,1},
117 {1,0,0,0,0,0,0,1,0,1},
118 {1,1,1,1,1,1,1,1,1,1}
119 },
120 {
121 {1,1,1,1,1,1,1,1,1,1},
122 {1,7,7,2,0,0,0,7,7,1},
123 {1,5,7,7,0,0,7,7,5,1},
124 {1,5,7,7,0,0,7,7,5,1},
125 {1,7,3,0,0,0,0,4,7,1},
126 {1,1,1,1,1,1,1,1,1,1}
127 }
128 };
129 k=rand()%10;
130 while (1)
131 {
132 int e=1;
133 int keyx,keyy;
134 int x;
135 int y;
136 int dx;
137 int dy;
138 GotoXY(0,0);
139 for (int i=0;i<6;i++)
140 {
141 for (int j=0;j<10;j++)
142 {
143 if (map[k][i][j]==1)
144 {
145 cout<<"#";
146 }
147 if(map[k][i][j]==0)
148 {
149 cout<<" ";
150 }
151 if(map[k][i][j]==2)
152 {
153 cout<<"$";
154 keyx=i;
155 keyy=j;
156 }
157 if (map[k][i][j]==4)
158 {
159 cout<<"%";
160 dx=i;
161 dy=j;
162 }
163 if (map[k][i][j]==3)
164 {
165 cout<<"@";
166 x=i;
167 y=j;
168 }
169 if (map[k][i][j]==5)
170 {
171 cout<<"&";
172 zx[e]=i;
173 zy[e]=j;
174 e++;
175 }
176 if (map[k][i][j]==6)
177 {
178 cout<<"O";
179 }
180 if (map[k][i][j]==7)
181 {
182 cout<<"^";
183 }
184 }
185 cout<<endl;
186 }
187 if(x==keyx&&y==keyy)
188 {
189 key=1;
190 GotoXY(60,4);
191 cout<<"YOU GET THE KEY!!! ";
192 }
193 else if (x==dx-1&&y==dy||x==dx+1&&y==dy||x==dx&&y==dy+1||x==dx&&y==dy-1)
194 {
195 if (key==1)
196 {
197 GotoXY(60,4);
198 cout<<"YOU WIN!!! <<<按任意键继续>>> ";
199 ch=_getch();
200 key=0;
201 break;
202 }
203 else
204 {
205 GotoXY(60,4);
206 cout<<"NO KEY!!! ";
207 }
208 }
209 for (int i=1;i<=5;i++)
210 {
211 if (x==zx[i]&&y==zy[i])
212 {
213 z+=1;
214 zx[i]=100;
215 zy[i]=100;
216 GotoXY(60,4);
217 cout<<"YOU GET A BAG OF TNT!!! ";
218 GotoXY(66,5);
219 cout<<z;
220 }
221 }
222 GotoXY(60,3);
223 cout<<"第"<<gq<<"层" ;
224 GotoXY(0,6);
225 ch=_getch();
226 switch (ch)
227 {
228 case 'w':
229 if (map[k][x-1][y]==1||map[k][x-1][y]==4||map[k][x-1][y]==6)
230 {
231 break;
232 }
233 else if (map[k][x-1][y]==7)
234 {
235 GotoXY(y,x-1);
236 cout<<"@";
237 GotoXY(y,x);
238 cout<<" ";
239 GotoXY(60,4);
240 cout<<"YOU LOSE!!! ";
241 ch=_getch();
242 system("cls");
243 m();
244 }
245 else
246 {
247 map[k][x-1][y]=3;
248 map[k][x][y]=0;
249 }
250 break;
251 case 's':
252 if (map[k][x+1][y]==1||map[k][x+1][y]==4||map[k][x+1][y]==6)
253 {
254 break;
255 }
256 else if (map[k][x+1][y]==7)
257 {
258 GotoXY(y,x+1);
259 cout<<"@";
260 GotoXY(y,x);
261 cout<<" ";
262 GotoXY(60,4);
263 cout<<"YOU LOSE!!! ";
264 ch=_getch();
265 system("cls");
266 m();
267 }
268 else
269 {
270 map[k][x][y]=0;
271 map[k][x+1][y]=3;
272 }
273 break;
274 case 'a':
275 if (map[k][x][y-1]==1||map[k][x][y-1]==4||map[k][x][y-1]==6)
276 {
277 break;
278 }
279 else if (map[k][x][y-1]==7)
280 {
281 GotoXY(y-1,x);
282 cout<<"@";
283 GotoXY(y,x);
284 cout<<" ";
285 GotoXY(60,4);
286 cout<<"YOU LOSE!!! ";
287 ch=_getch();
288 system("cls");
289 m();
290 }
291 else
292 {
293 map[k][x][y]=0;
294 map[k][x][y-1]=3;
295 }
296 break;
297 case 'd':
298 if (map[k][x][y+1]==1||map[k][x][y+1]==4||map[k][x][y+1]==6)
299 {
300 break;
301 }
302 else if (map[k][x][y+1]==7)
303 {
304 GotoXY(y+1,x);
305 cout<<"@";
306 GotoXY(y,x);
307 cout<<" ";
308 GotoXY(60,4);
309 cout<<"YOU LOSE!!! ";
310 ch=_getch();
311 system("cls");
312 m();
313 }
314 else
315 {
316 map[k][x][y]=0;
317 map[k][x][y+1]=3;
318 }
319 break;
320 case 'x':
321 if (z>0)
322 {
323 z--;
324 GotoXY(66,5);
325 cout<<z<<" ";
326 for (int m=x-1;m<=x+1;m++)
327 {
328 for (int d=y-1;d<=y+1;d++)
329 {
330 if (map[k][m][d]==6)
331 {
332 map[k][m][d]=0;
333 }
334 }
335 }
336 }
337 else
338 {
339 GotoXY(60,4);
340 cout<<"YOU DON'T HAVE ANY TNT!!! ";
341 }
342 break;
343 }
344 }
345 GotoXY(0,7);
346 gq++;
347 key=0;
348 }
349 }
350 void m()
351 {
352 system("cls");
353 char ch1;
354 system("title 迷宫-作者S_JH330206");
355 cout<<" 迷宫游戏"<<endl;
356 cout<<"----------------------------------------------------------------"<<endl;
357 cout<<endl;
358 cout<<" [h]帮助"<<endl;
359 cout<<" [m]游戏"<<endl;
360 cout<<endl;
361 cout<<"----------------------------------------------------------------"<<endl;
362 ch1=_getch();
363 if (ch1=='m')
364 {
365 migong();
366 }
367 if (ch1=='h')
368 {
369 help();
370 }
371 else
372 {
373 m();
374 }
375 }
376 int main()
377 {
378 m();
379 return 0;
380 }

这个是脚本的自定义头文件:

1 #include<iostream>
2 #include<windows.h>
3 void GotoXY(int x, int y) // 移动
4 {
5 HANDLE hout; //屏幕尺寸 变量
6 COORD coord={x,y}; //光标坐标 变量 光标x标 光标y标
7 hout=GetStdHandle(STD_OUTPUT_HANDLE); //获得屏幕尺寸
8 SetConsoleCursorPosition(hout,coord); //移动光标
9 }

【转载】C/走迷宫代码的更多相关文章

  1. C语言动态走迷宫

    曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...

  2. 洛谷P1238 走迷宫

    洛谷1238 走迷宫 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个 ...

  3. NYOJ306 走迷宫(dfs+二分搜索)

    题目描写叙述 http://acm.nyist.net/JudgeOnline/problem.php?pid=306 Dr.Kong设计的机器人卡多非常爱玩.它经常偷偷跑出实验室,在某个游乐场玩之不 ...

  4. P1238 走迷宫

    原题链接 https://www.luogu.org/problemnew/show/P1238 为了巩固一下刚学习的广搜,练一下迷宫类型的题 不过这道题我用的深搜..... 看问题,我们就知道这道题 ...

  5. 洛谷P1238 走迷宫题解

    题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个数据来描述的,分别表示 ...

  6. 一本通之 一堆迷宫 (Dungeon Master&走出迷宫&走迷宫)

    一本通在线崩溃....... . 有图有真相 这是个三维迷宫,其实和二位迷宫差不多,只是方向多加了2个. 但这个题的输入十分恶心,一度被坑的用cin.ignore(),但还是不过... 它的正确输入方 ...

  7. HDU 2102 A计划(BFS/DFS走迷宫)

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. golang广度优先算法-走迷宫

    广度优先遍历,走迷宫思路: 1.创建二维数组,0表示是路,1表示是墙:创建队列Q,存储可遍历的点,Q的第一个元素为起始点 2.从队列中取一个点,开始,按上.左.下.右的顺序遍历周围的点next,nex ...

  9. 用Q-learning算法实现自动走迷宫机器人

    项目描述: 在该项目中,你将使用强化学习算法,实现一个自动走迷宫机器人. 如上图所示,智能机器人显示在右上角.在我们的迷宫中,有陷阱(红色炸弹)及终点(蓝色的目标点)两种情景.机器人要尽量避开陷阱.尽 ...

随机推荐

  1. 力扣Leetcode 572. 另一个树的子树

    另一个树的子树 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树. 示例 ...

  2. 轻轻松松学CSS:float

    float属性,会使元素向左或向右移动,其周围的元素也会重新排列.float不仅自己飘忽不定,还对周围元素有影响,这种影响力不容小觑.他捉摸不定(浮动规律不好把握),他干涉他国内政(对周围元素有影响) ...

  3. laya资源版本管理

    layaair-cmd https://ldc.layabox.com/doc/?nav=zh-as-3-4-2 Laya的版本管理 https://blog.csdn.net/qq_43287088 ...

  4. react-native 常用命令

    创建项目 react-native init AwesomeProject //AwesomeProject是项目名 启动 Node.js web server react-native start ...

  5. 软件架构与设计 百度网盘的pdf电子书籍

    如有版权问题请及时联系小编 软件架构与设计 百度网盘的pdf电子书籍 1:<软件体系结构(PDF)>https://pan.baidu.com/s/1lChfIJt5lc63KO09n5L ...

  6. GitHub 热点速览 Vol.36:当股票遇到机器学习,异常股无所遁形

    作者:HelloGitHub-小鱼干 摘要:虽然上周的 GitHub Trending 榜新项目寥寥无几,但胜在表现不俗,例如:通过机器学习来检测异常股票的项目 Surpriver,还有腾讯开源的管理 ...

  7. Redis Linux 安装部署

    Redis部署文档   Redis部署文档 准备软件: 开始部署: 解压tar包[root@localhost redis]# tar -zxvf redis-3.2.8.tar.gz 进入Redis ...

  8. Zabbix下查看参数的小技巧

    我们在管理.维护Zabbix的时候,经常需要查看配置文件下的一些参数信息.下面介绍一些常用的小技巧. 1:我想知道zabbix_server.conf文件中配置了那些参数. # grep '^[a-Z ...

  9. Q200510-03-02: LRU缓存机制

    问题: LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果 ...

  10. linux系统漏洞扫描工具lynis

    lynis 是一款运行在 Unix/Linux 平台上的基于主机的.开源的安全审计软件.Lynis是针对Unix/Linux的安全检查工具,可以发现潜在的安全威胁.这个工具覆盖可疑文件监测.漏洞.恶意 ...