找回密码
 立即注册!
搜索

小喇叭+ 发布

12-31 23:03
系统消息:尊敬的用户,动象论坛的邮件系统已经完美修复,您现在可以顺利使用自助注册和找回密码功能了。万分感谢你对动象论坛的喜爱与支持~
06-10 15:28
系统消息:很抱歉的通知您,当前论坛的邮件系统暂时出现故障,因此自助注册和找回密码的功能将无法使用。如有任何需要,您可以直接添加客服QQ:230273459进行人工操作。对此给您带来的不便,我们深感歉意。
06-10 09:11
admin动象论坛祝大家端午快乐~悠悠粽草,人间芳华,年年岁岁皆如愿,岁岁年年长安康。
06-10 09:09
系统消息:动象论坛祝大家高考加油~
06-09 15:13
系统消息:各位坛友,由于“两会”封网原因,动象论坛服务中止了约一个星期,对于由此给您造成的麻烦我们感到万分抱歉。
03-18 23:04
admin动象论坛在这里祝大家2024龙年新年快乐~
02-09 14:58
系统消息:论坛端口问题已经解决~您可以直接访问论坛域名mcmc.ltd(www.mcmc.ltd)啦~(Tips:如访问时提示“连接被重置”报错,请清空您的DNS缓存与浏览器缓存。)
02-05 19:14
系统消息:论坛预计今天晚间将端口问题修复完成,请留意论坛动态,感谢您对动象论坛的支持~
02-05 14:06
系统消息:动象论坛目前正在紧急迁移服务器,目前请您先访问https://mcmc.ltd:150。论坛正在全力找CDN以修复端口问题,由此给您造成影响亿常抱歉。。
02-05 11:23
系统消息:动象论坛祝大家2024年新年快乐吖~祝大家前路浩浩荡荡,万事皆可期待~
12-31 22:41
系统消息:动象论坛拟于7月20日至7月21日进行服务器迁移和域名更换,届时论坛服务将暂时不可用。对此给您带来的麻烦,我们感到十分抱歉。
07-18 19:51
Mozillahello world
07-04 17:39
系统消息:高考倒计时2天!动象论坛祝大家2023高考完胜!加油!!!!!!
06-04 23:44
神秘人:
03-21 07:20
系统消息:向各位论坛坛友公开一下,我们现在吸收了@luoying2334 为论坛管理团队成员,管理讨论区、软件分享区和得闲饮茶区。如您有任何质疑,请您在【意见与建议】版块发帖,感谢您的支持~
03-20 23:23
admin论坛没啥人气啊emmm,欢迎大家来推荐退荐~
03-12 22:34
02-05 11:11
luoying2334给我学狗叫啊,三回啊三回
02-05 11:11
Civilmafia追尾黑色高级车
02-04 14:27
查看: 1432|回复: 0

扫雷圣诞节特别版

[复制链接]

11

主题

57

回帖

585

积分

清正廉明~版主

风纪委员

积分
585

最佳新人活跃会员

发表于 2020-7-18 11:07:14 | 显示全部楼层 |阅读模式 IP:浙江嘉兴
  1. #include<stdio.h>
    ! g5 R& l' ^3 q& L! Z: h
  2. #include<windows.h>4 D0 t+ C$ ~6 U$ g& a6 u' t
  3. #include<stdlib.h>" y/ S1 o, z" C
  4. #include<time.h>0 v, p( t8 G0 c2 [+ |  ~" ]
  5. #include<conio.h>
    9 ^9 F8 }$ H/ }  h* |* c" D
  6. #include<queue>$ ]" E; z0 n% g% K# _' o
  7. #include<ctype.h>
    1 X2 I* f. @, b8 \6 O8 \! Y9 m
  8. #define A 17 //地图的高
    ) K8 V7 x( m% [- l2 N
  9. #define B 17 //地图的宽
    % K; O9 q, a4 @; l( Z( v  _6 N: A
  10. #define C 30 //雷的总数* v( l, z1 g2 h
  11. using namespace std;7 x9 y  O6 M5 H* a& Z
  12. " E4 J' ^) z; A; K4 H3 `9 }
  13. //全局变量
    8 P; J( f  N4 s! K* [( D2 `
  14. DWORD a,b;
    ; b8 k* T& ~0 {  ^
  15. char map[A][B],news,spare;6 W7 ^6 T5 O7 N3 \. d  }
  16. int BoomTotalNum,floatx,floaty,flag[A][B],flagnum,mode,slect[A][B],game;
    2 {6 k+ d+ M$ v4 N& Q1 o
  17. ) a7 W9 Z0 g5 @) ?' u+ X
  18. //颜色属性
    & m4 V& D) @- q. b6 s" Z# R  z/ c) A
  19. const WORD FORE_BLUE = FOREGROUND_BLUE; //蓝色文本属性5 E7 c, \: ]4 E7 e4 T
  20. const WORD FORE_GREEN = FOREGROUND_GREEN; //绿色文本属性
    4 I" P4 f( R/ q) s# Q6 @
  21. const WORD FORE_RED = FOREGROUND_RED; //红色文本属性! q! H) D; h+ i6 q

  22. / I5 p) w8 O$ f3 S+ g4 u, b
  23. //开垦地图结构体
    % t* ~6 L! p; Z# y% H
  24. struct node {+ b/ E  }* U; H+ \' @
  25. int x;
    . N% [8 g/ A1 E# Z. T
  26. int y;
    ; {* H) E, t& M
  27. };. n% A/ {$ K0 d0 ]5 e, o
  28. queue <node> dui;
    8 E( I: U/ M  r- Q2 R9 ~

  29.   A  A" q2 a! ?" @/ {
  30. //打印位置
    , A: I, ]9 J$ f6 U1 b
  31. void position(int x,int y) {7 C( `5 h2 _8 h; l. ?
  32. COORD pos={x,y};5 d7 }5 ^/ f8 S( t, O9 _
  33. HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);
    # H, J0 G# b% v0 {0 F
  34. SetConsoleCursorPosition(Out,pos);, P) S% M8 V+ p: @3 R. g& t
  35. }1 ]9 q6 @# _& M, Y
  36. & k% A% W$ n, a! X) Y$ F) d9 J9 t! a
  37. //隐藏光标 # g. c$ I0 Q/ |+ A2 ?' s% c% R% B9 T& q
  38. void Hide() {9 n, K1 l( G/ r) G$ }
  39. HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); 3 _: Z( w8 j! t: T# `  H* f0 i
  40. CONSOLE_CURSOR_INFO CursorInfo;
    " X$ a0 O1 N/ e7 A; [+ h& l( }0 G0 V% C
  41. GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息 ! Z% i& g# {: D2 p
  42. CursorInfo.bVisible = false; //隐藏控制台光标 4 k- [9 v3 c7 y# e0 |
  43. SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
    * e3 g7 Z$ p) s- _" @  }5 p
  44. }
    & p$ _: ?1 t+ Z- q- L' I$ q
  45. # Q' b' v8 r# ?, s
  46. //初始化
    ) `' X/ V+ P0 {. o6 M9 ^' _
  47. void Beginning() {
    / l5 S" f% j8 u  R% f  S
  48. while(!dui.empty()) {
    * t: [' Y+ B: t; o3 g/ }
  49. dui.pop();8 Z! f2 T8 R9 H# {
  50. }
    . N3 H  Y" H- W0 Q( ^8 v6 c
  51. game=1;
    / Y/ D- M  J$ i
  52. //BoomTotalNum=C;+ N4 `- h3 B0 e! K- C- m' l) }
  53. floatx=A/2;
    1 H7 X2 G6 H6 _& h! d
  54. floaty=B/2;
    3 s. t, f" c' R  V1 @2 n5 H
  55. flagnum=0;. `1 {" g$ j' O" Z' s2 F
  56. BoomTotalNum=C;9 s& d+ ]9 S/ g! W* Y; ]
  57. mode=0;
    ! ]5 Z# b" n( e5 k9 V& a
  58. HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄
    ( F+ K9 u4 p* w, D, _
  59. CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体
    " f9 {1 h% x# ^$ d
  60. GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息
    & b+ X! ]2 b, c3 ^& h0 S% ?9 N5 G
  61. int x,y;6 @. i6 r: o8 L3 |9 x
  62. srand((unsigned)time(0));% b, W0 o# G# N4 P7 g% w
  63. for(int i=0;i<A;i++) for(int j=0;j<B;j++) {
    # \4 r- k) F7 q! [
  64. map[i][j]=' ';
    8 I& F, L' ~1 ?' U9 l
  65. flag[i][j]=0;
    7 I' d0 X" W$ V% @- {
  66. slect[i][j]=0;% n2 |2 j% m. r9 F( g
  67. }
    . Q' x: U( o+ ~- ]& d3 v7 g
  68. while(BoomTotalNum) {: ~4 F  c* ]0 m' M) z. q6 m7 p% ?
  69. x=rand()%A;
    ' o4 x& y9 j0 a& C+ H+ f! D  w5 r
  70. y=rand()%B;2 a1 u" W( N- A1 r
  71. if(map[x][y]==' ') {( Q; ], q9 i0 ^
  72. map[x][y]='@';6 ?2 }7 @: ]7 K  p5 {! N
  73. BoomTotalNum--;0 m& [' t  Y' o, O. R# F2 _
  74. }& g5 d9 B0 P- z$ @2 b
  75. }
    1 _  U" Y7 e5 J; \* m, b. W
  76. SetConsoleTextAttribute(handle_out, FORE_GREEN);
    % }- S4 l7 j  `3 u. }0 G# E; k9 V6 ]
  77. for(int i=0;i<A;i++) {
    9 r0 G7 i2 l9 K) A" C
  78. for(int j=0;j<B;j++) printf("█");- w4 w9 E9 G3 H1 C& e6 u
  79. printf("\n");
    , ?) j2 ]6 x* ]+ W- y0 J1 C2 f& G
  80. }  e7 G& h3 x8 ^$ n& Y
  81. position(floaty*2,floatx);7 _/ j4 Z% E; D
  82. SetConsoleTextAttribute(handle_out, FORE_RED); 3 E: G; e  ^0 K/ s
  83. printf(""); //光标位置
    / Y  k8 E( @1 W4 M; \
  84. position(44,9);+ u  d1 Y5 i7 J3 M( U8 ]
  85. printf("扫雷模式");% }/ d" a# F& p. W1 @9 F2 X
  86. position(44,5);3 g# W" G8 p: X8 g' M* J& k
  87. printf("剩余雷数:%d ",C-flagnum);
    3 X, r9 n+ ~! }, f: f* c
  88. SetConsoleTextAttribute(handle_out, FORE_GREEN);
    + @: u5 R' |- `& x' _5 A# w6 W
  89. position(5,22);
    1 }% b+ o5 a9 M7 D* h
  90. printf("按“空格”切换模式");; D6 u' O* a9 U. T
  91. position(5,23);
    9 C) W; b0 S) g" E4 {; M! T6 A
  92. printf("按“Enter”确认");' J/ k% x* V0 A' P- p6 a) X( s
  93. position(5,24);& K& ~; x3 ^3 w+ C0 s
  94. printf("按“方向键”选择方块"); # I& O( ^+ l* f2 h
  95. * L: E/ _/ o8 r* m; D5 I( b
  96. }
    ' k4 ?3 ~- {# W5 E3 M: X( \
  97. " J- P0 g( v! m( T5 c# a5 e( T8 j
  98. //打印地图的一块儿 ; A4 a+ a$ z8 I0 v! b; Y# ?, d
  99. void Lump(int xx,int yy) {- G- S8 ~8 Z# }% j
  100. switch(map[xx][yy]) {( F9 T$ o6 W% ^9 q: f' k
  101. case '1' : printf("①");break; //周围雷的数量(下同) , k1 i0 ^. [- E" I, w$ K# v
  102. case '2' : printf("②");break;
    ' W& W! v! b' {$ \: t
  103. case '3' : printf("③");break;( u4 V+ g7 N  B+ ?6 W: C$ z
  104. case '4' : printf("④");break;
    ! F8 @+ W' v$ s8 m/ ^  @; `
  105. case '5' : printf("⑤");break;
    + X+ E) j6 l2 m( S, K* ]
  106. case '6' : printf("⑥");break;, Y; r' n1 P0 W7 U
  107. case '7' : printf("⑦");break;
    , X" B+ L3 d2 H+ i, c- p
  108. case '8' : printf("⑧");break;$ C! _  `3 ^, j3 V1 [
  109. case ' ' :# }, F7 a" w6 O
  110. if(xx==floatx&&yy==floaty) {
    ) ~) T: c" r5 G/ W* H* ]- Q, ~
  111. if(flag[xx][yy]==0) {
    : a( Z1 Z! [. E# G
  112.   if(mode%2==0) printf("");
    , I0 x) t9 p% z# C4 E
  113.   else printf("");
    % Z. s3 \6 L% l0 ~: t) F. W; P
  114. }
    & y3 Q" o% o/ c$ E- H/ o" _  v
  115. else printf("");
    + G! V( Z! I1 }* U8 L: }
  116. }
    ' g# m9 T/ @' l- C" H
  117. else {0 T1 F1 Y& Y! U- ^/ D
  118. if(flag[xx][yy]==0) printf("█");5 d# s2 U/ A, e, t: j5 |5 I
  119. else printf("");
    % s0 p0 g& F! B) m+ ]
  120. }
    ; \! W; x6 ?4 r: M0 u% \
  121. break;' z$ v4 ^# [. r- U! u  P
  122. case '@' :4 V/ J1 u$ r$ \+ C- N- h- r8 E
  123. if(xx==floatx&&yy==floaty) {, `0 r9 G+ p) m4 ?6 `8 P
  124. if(flag[xx][yy]==0) {
    ) e  L5 `1 M$ R8 n9 n- A. n/ P* a* s
  125.   if(mode%2==0) printf("");
    4 I2 b2 [# ~6 t; \6 ^
  126.   else printf("");. A& T) r$ K! k' ?, d3 M6 r
  127. }
    9 e4 A4 ~# w) [1 g8 v- `
  128. else printf("");0 N2 q" f+ i3 F+ G; b+ V" c2 _
  129. }
    : q6 j% K3 r% a4 G) L$ ?
  130. else {$ g* d( X# t" t3 E1 |7 J
  131. if(flag[xx][yy]==0) printf("█");6 i; p: D3 d: ^$ O6 o% k
  132. else printf("");
    7 ]6 D& Z6 W& d" N' r  q, `9 G
  133. }3 E' B# ]$ q3 N1 I* x, O1 a
  134. break;& |8 `1 |( @2 f7 X% S, H
  135. case 'x' : if(floatx==xx&&floaty==yy) printf(""); else printf(" ");break; //已经挖开的空白
    0 ~- E% H5 U" i8 B' V/ `
  136. }! f- T' t5 H3 y' p' r5 u
  137. }) j9 N& Q2 O$ t5 H' w  l
  138. " H4 v; g" k) G2 ]# U
  139. //移动光标1 k2 H+ Q5 `  q% r
  140. void Move() {% j: V1 \& w* l/ m
  141. HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 ; r+ b/ V6 g- r4 g$ ?- a8 ~9 q
  142. CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体 . j4 t9 Q8 e6 A2 g
  143. GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息
    5 l9 `( X% ^5 y+ W9 J
  144. int xxx,yyy;8 a$ N9 K; m0 j! t
  145. xxx=floatx;
    ( U- v5 T% o& H' ~, e+ ]  @& m& _: ~
  146. yyy=floaty;
    , ]# @# q2 E- P
  147. switch(news) {
    5 j3 |* [$ c  o" K% O! O; Y
  148. case 72 : floatx--;break; //上 + Q1 A7 H7 {0 F- p; u
  149. case 80 : floatx++;break; //下 / D7 \. x7 c/ V. K4 ^5 w  f, g
  150. case 75 : floaty--;break; //左
    7 w7 W: m- p( y  @% }% U* J
  151. case 77 : floaty++;break; //右
    9 [5 c% W  X7 v, P* Z
  152. }
    3 [$ X9 q% g' E6 G, Y  J% ]  N
  153. if(floatx==-1) floatx=A-1; floatx%=A; //两端穿模处理 9 @: Z) G# x; G0 |7 r8 i) `
  154. if(floaty==-1) floaty=B-1; floaty%=B;
    7 w" D# N! G- Z
  155. % a$ x% \0 t3 ]" S* I2 H% c
  156. position(yyy*2,xxx);/ Q+ C3 E7 `  ^6 D, W( }. s) ]2 r! L8 {
  157. SetConsoleTextAttribute(handle_out, FORE_GREEN);
    7 ]0 p" {) }* C- e
  158. Lump(xxx,yyy); //删除原位置
    ( l! M3 c# M$ A( A# T* X
  159. 9 W9 T. `; u# X
  160. if(map[floatx][floaty]=='x') {
    " c3 K/ O2 d# ^' g2 N" E
  161. position(floaty*2,floatx);
    % {) W& H: n. s: G0 S3 {
  162. printf(" ");3 g- [( G2 m! q
  163. }, A9 l2 V  k3 w% \  m( J( \
  164. % y* _$ _3 {3 b# m- h( d0 P
  165. position(floaty*2,floatx);
    8 e: o& Q7 a7 \2 z
  166. SetConsoleTextAttribute(handle_out, FORE_BLUE); 0 U+ C* U9 t& m  s/ j! E, h+ f3 k
  167. Lump(floatx,floaty); //更新新位置 . M7 K3 o! _1 Z- m0 ?& F3 r
  168. } - x. K0 S0 L$ i$ u* Y! E3 n

  169. 4 r  ^# \# t/ k9 _% o( B4 D
  170. //插旗和排雷模式切换
    ' r7 ?4 x) |* |  _
  171. void Mode() {! z, w( N: K- X
  172. HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄
    1 }9 L4 b( h' W8 m7 Z- d4 u" z
  173. CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体
    1 a! U! P2 ~7 H+ |$ }7 z& z" M5 j, V
  174. GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息# M$ g6 f1 k2 N( e* U& X& t! H/ V
  175. mode++;# f. Y8 s7 i% z7 ]* E
  176. SetConsoleTextAttribute(handle_out, FORE_BLUE);7 s$ G! U9 d* }, E' C3 j* C
  177. position(floaty*2,floatx);$ I" z1 C4 J0 }* T/ z9 }
  178. if(mode%2==0) printf("");
    1 x: f8 n- s+ _8 d
  179. else printf("");
    . P$ F; E9 X6 s5 T# F& L4 {$ b3 y

  180. - x% h* O9 T3 j4 O; w0 h* v
  181. position(44,9);- c9 v8 J7 M0 ]; K8 T  k
  182. if(mode%2==0) {
    , S# L9 n0 R8 X7 P- H
  183. SetConsoleTextAttribute(handle_out, FORE_BLUE);
    6 n8 Z- b3 r) b4 b. T2 {
  184. printf("扫雷模式");& r8 C+ |4 S$ b  l" |0 ~9 Z1 W
  185. }! G8 O' H' o7 A3 g' L" ]9 H
  186. else {
    , }! `2 W# r  {
  187. SetConsoleTextAttribute(handle_out, FORE_RED);
    % H% o, q& Q. r; K9 n. q& A
  188. printf("插旗模式");" y* I4 C0 ^7 e$ ], j' R
  189. }  ^; d( _+ ]% K4 L; c6 L# x  \
  190. }
    % s7 m; K5 m# `! O) I) _

  191. : j# m8 _/ X/ S" o: f
  192. //该点周围地雷数 1 ~! j$ ?  L7 Q$ u
  193. int Boomnum(int xx,int yy) {# q9 g. @) N% v! H7 k! ]( `; W
  194. int num=0;
    1 \0 a1 k! ]2 B6 I3 `
  195. if((xx-1>=0)&&(yy-1>=0)&&(map[xx-1][yy-1]=='@')) num++;
    & L( X9 }# j" K
  196. if((xx-1>=0)&&(yy+0>=0)&&(map[xx-1][yy]=='@')) num++;
    ; I7 s/ @$ p2 ^7 g, ~4 ^, H8 i( Y  r
  197. if((xx-1>=0)&&(yy+1<B) &&(map[xx-1][yy+1]=='@')) num++;
    , H2 H: E1 d2 v8 v
  198. if((xx+0>=0)&&(yy-1>=0)&&(map[xx][yy-1]=='@')) num++;0 R' Q( v  T. ^) x
  199. if((xx+0>=0)&&(yy+1<B) &&(map[xx][yy+1]=='@')) num++;% ^; b$ T: F+ k4 }& F9 A1 K
  200. if((xx+1<A)&&(yy-1>=0) &&(map[xx+1][yy-1]=='@')) num++;
    * ^& v# I- F0 C5 X/ S
  201. if((xx+1<A)&&(yy+0>=0) &&(map[xx+1][yy]=='@')) num++;
    4 w3 G) S' Q9 k) r# h  A' Z
  202. if((xx+1<A)&&(yy+1<B) &&(map[xx+1][yy+1]=='@')) num++;! f8 T8 P9 B0 M1 X
  203. return num;9 N' S! E# D7 K! n  n
  204. }4 F7 |& R/ F3 Y
  205. 5 |/ R4 d! u5 V1 O( n
  206. //更新地图 8 A7 t; E) h6 k( `/ ?
  207. void Open() {
    1 W& Z, s* b4 j$ Q+ Q) n+ n) y
  208. node c;, P6 |# W- ]) x. o3 N! a1 N5 Q: s
  209. node d;, K" V7 [! q. ~0 P* y3 U% m, E
  210. while(!dui.empty()) {
    0 M$ J! W5 P3 ]0 _! M/ V1 j$ N
  211. dui.pop();" q3 U$ L5 R9 L; b- T
  212. }6 r$ o3 b8 b- O0 H  ~% Z& F
  213. c.x=floatx;
    * C4 W' Q& s/ A9 `2 _! w1 a
  214. c.y=floaty;
    ) Z5 U' a3 r" x/ H
  215. dui.push(c);
    ; `* O2 W' L5 x+ E1 c
  216. slect[c.x][c.y]=1;
    7 X, a. {) \6 ^2 L4 X2 \
  217. while(!dui.empty()) {
    ! O  D4 U1 o1 F; p5 ]) N
  218. c=dui.front();0 P4 E; w& ^5 t
  219. dui.pop();
    - C3 ^5 I- `& g) K* {+ R1 m, ?" O
  220. if(Boomnum(c.x,c.y)!=0) {8 Z+ R; m7 r3 k
  221. map[c.x][c.y]=(Boomnum(c.x,c.y)+48);: {6 z' e2 i- u8 K" x4 t
  222. continue;8 l! c2 {* u* ~* f- y* P( I
  223. }
    + c* K+ d& x* f2 r# L  N6 V
  224. else {
    ; L) }2 _6 y8 Y2 D0 y4 Q
  225. map[c.x][c.y]='x';                                                                                                         
    6 W; f% @, E, C3 g% H4 [9 F
  226. if((c.x-1>=0)&&(c.y-1>=0)&&(map[c.x-1][c.y-1]==' ')&&(slect[c.x-1][c.y-1]==0)) {
    0 g2 s/ B5 t8 T  L
  227. d.x=c.x-1;/ _: i0 t  Q3 V5 U# A
  228. d.y=c.y-1;
    9 N6 v8 a1 A2 s3 }% _0 R5 k
  229. dui.push(d);
    1 k9 u  q) H: H5 }0 S( m/ C
  230. slect[d.x][d.y]=1;  T0 ?6 N* u( X$ d( Z! B
  231. }& f% v  U+ [' n
  232. if((c.x-1>=0)&&(c.y-0>=0)&&(map[c.x-1][c.y]==' ')&&(slect[c.x-1][c.y]==0)) {( v# Y# g, w7 [2 b4 E8 u
  233. d.x=c.x-1;
    9 d; ~/ Q( k3 G7 E- B$ H& V' L
  234. d.y=c.y-0;
    4 |9 B" y' r, \3 y
  235. dui.push(d);
    # Z0 \- I9 D& s1 \
  236. slect[d.x][d.y]=1;
    1 i, H4 w  X+ r! W$ T* }
  237. }
    . V# ?- D0 f+ ^2 j* r1 |* m
  238. if((c.x-1>=0)&&(c.y+1<B)&&(map[c.x-1][c.y+1]==' ')&&(slect[c.x-1][c.y+1]==0)) {
    ' c, f0 O# @" L* T( p- ?  ?5 F3 k
  239. d.x=c.x-1;$ S1 v3 l# b# G# [# ]: W
  240. d.y=c.y+1;
    $ g3 \! Z; {) ]' A% V& O: q
  241. dui.push(d);$ e& M) `" q7 g0 l+ Z% i
  242. slect[d.x][d.y]=1;
    , h  ], f' E5 b5 l& d& O
  243. }
    ' a, l3 h& T" L! F
  244. if((c.x-0>=0)&&(c.y-1>=0)&&(map[c.x][c.y-1]==' ')&&(slect[c.x][c.y-1]==0)) {
    , z6 x, |" s) e* \) f1 b
  245. d.x=c.x-0;
    ) r; Q6 S  B1 b2 [, I  c& U6 h
  246. d.y=c.y-1;! W1 Q% n7 k" l" S! Y; P: B
  247. dui.push(d);
    ! `; E' Z0 S; n
  248. slect[d.x][d.y]=1;. N2 @3 p" s/ K* ]
  249. }5 H# s2 Y9 u) i& o* J
  250. if((c.x-0>=0)&&(c.y+1<B)&&(map[c.x][c.y+1]==' ')&&(slect[c.x][c.y+1]==0)) {
    4 ]# j# `( }* O: D4 k1 [8 k8 I
  251. d.x=c.x-0;: s+ L7 ]7 v( \% D# b* F0 d% ^, c- [
  252. d.y=c.y+1;, \. `) q/ G$ l* q. a( U
  253. dui.push(d);- @) ~/ ?' T" d6 K) v& D3 Q* g, A- O
  254. slect[d.x][d.y]=1;* i8 m: U4 o( I; d* b; J- s! t9 T
  255. }
    3 U, |; o# N- T0 v& a( r
  256. if((c.x+1<A)&&(c.y-1>=0)&&(map[c.x+1][c.y-1]==' ')&&(slect[c.x+1][c.y-1]==0)) {% U9 g& j' x5 ?
  257. d.x=c.x+1;* R6 ~2 Q# {8 R) F" N2 b1 t5 C
  258. d.y=c.y-1;( J( l* M+ @- i4 M; _: Y1 u4 b
  259. dui.push(d);9 I+ I+ u0 \# @7 F
  260. slect[d.x][d.y]=1;/ d. \5 C% P2 I; t! i  M4 Z0 P: w2 U
  261. }
    ( z* K/ \) {+ D( }1 f8 |( [, |
  262. if((c.x+1<A)&&(c.y-0>=0)&&(map[c.x+1][c.y]==' ')&&(slect[c.x+1][c.y]==0)) {
    9 m( Y, i; f) ]) X5 T
  263. d.x=c.x+1;. G& d/ D% j, G
  264. d.y=c.y-0;9 {$ c+ p' }8 n1 F# h6 ]2 v" [  b
  265. dui.push(d);
    9 O+ Y# f  [1 \' ^2 R
  266. slect[d.x][d.y]=1;
    : {- ]  [; r. T0 m" c. i
  267. }
    * O! O9 G# c  Y, o- k: q9 ]
  268. if((c.x+1<A)&&(c.y+1<B)&&(map[c.x+1][c.y+1]==' ')&&(slect[c.x+1][c.y+1]==0)) {1 v& Y& y: i) s7 f" _
  269. d.x=c.x+1;9 {1 I, ?+ ]7 B4 O3 P
  270. d.y=c.y+1;
    / f/ ?0 K) ~; y3 }* r
  271. dui.push(d);( V! ?- j' y3 F! l) R* s. C* c5 S
  272. slect[d.x][d.y]=1;8 W3 ]. y' U. ~
  273. }3 D9 C& S8 L% s) ^: s# A
  274. }
    " Y* _: U& I3 Y- m* Z
  275. }" w& h5 u: a4 g3 z$ b9 q% y, e
  276. }
    - m$ r! g2 ?1 y1 y/ i
  277. " B9 c, [" |8 I4 ^
  278. int main() {
    0 @5 W# U0 f$ {- G
  279. freopen("排名.txt","r",stdin);# |9 z0 S( z) ^, W6 c" E% j
  280. Relife: //重玩处$ S5 a; t3 n7 o4 J2 P6 x0 V9 H+ R
  281. HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 4 ?8 ^+ e5 E0 J
  282. CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体
    . b6 f# o6 ]. v' P/ l4 a
  283. GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息0 L0 [1 ^) V% O1 e8 A
  284. ) T1 H6 y% p8 V, `
  285. Hide(); - A* q1 J! H! `8 p  ]% c
  286. Beginning();8 B2 t, Z, f- U: Y" E3 s0 V  A9 ^
  287. a=GetTickCount();4 f6 j5 Z+ a# L- }  {/ y
  288. while(1) {
    ; E8 G! X# T. Q9 B
  289. if(kbhit()!=0) {
    ) N* Z/ j' C1 ~0 P' ]6 a# D
  290. spare=getch();7 v( C; _# J4 x
  291. $ F8 G+ z( J4 q; Y* P
  292. 5 Q, l- B* J8 E  s# w) D
  293. if((spare!=(-32))&&(spare!=13)&&(spare!=' ')) continue;  y5 i( ]- w. E/ c0 u9 c" x3 `& o

  294. ) \$ H7 G* k& [& _; Y
  295. ) B6 \* w) E& C# E. J0 c( D
  296. if(spare==13) {;
    * u) q/ w( z( Z3 Y% e
  297. 1 o' z+ i( E" {2 `1 E+ t8 X
  298. if(mode%2==0) {
    4 P+ S- d7 f+ Z/ P
  299.   if(map[floatx][floaty]=='@'&&flag[floatx][floaty]==0) {/ m) }3 r- [8 V+ H
  300.   break; 7 _/ R$ R% c5 I- p
  301.   game=0;
    - M" k* y) R' m# C. S
  302.   }
    $ ?' n% j$ x/ @8 F$ m3 T& W% B
  303.   / T# Q( n* o; F, T
  304.   if(flag[floatx][floaty]==1) continue;
    5 f7 y4 X  [* b& j
  305.   Open();
    / T$ S+ r$ k6 B6 A' N; V7 W& i5 H
  306.   position(0,0);
    ( ^2 D& w7 C, X
  307.   SetConsoleTextAttribute(handle_out, FORE_GREEN);$ ~+ `" C1 H# e' H( l  M. T- e
  308.   for(int i=0;i<A;i++) {
    7 S3 o' I3 R7 y8 }+ c+ [
  309.   for(int j=0;j<B;j++) Lump(i,j);1 f7 w; _; [& H: \! S
  310.   printf("\n");+ R( S! X# U8 i, X
  311.   }
    , k& K1 F" J: k) ?- _
  312.   position(floaty*2,floatx);
    ; p" y8 h% N  M3 P, I8 y% t: ^
  313.   SetConsoleTextAttribute(handle_out, FORE_BLUE);3 B$ d  E) m: j
  314.   Lump(floatx,floaty);
    7 H! R: S% R( v, W( n) \, y
  315. }& \* n4 w  f, [$ ?
  316. + }+ j3 c9 G. C/ z" z+ a! ]
  317. 1 p6 {2 R' I# `7 i. U
  318. else {/ `4 Q2 w, Y8 s5 ]% l# N6 L1 B
  319.   
    # n5 j/ b4 Y2 E/ W) W6 l/ U
  320.   5 F9 [( c8 R$ t9 O- g# J4 c
  321.   if(map[floatx][floaty]=='x'||(map[floatx][floaty]>'0'&&map[floatx][floaty]<'9'))
    ; u2 v6 O* v6 U9 g5 R
  322.   continue;
    8 J* ?! S7 v- j3 N
  323.   + ~0 v0 v& ~% \8 e) R4 q& e
  324.   
    4 w! m: [. \5 ^3 I' E: b- O
  325.   if(flag[floatx][floaty]==0) {
    ) M% l8 ~$ ]1 J  `% r% c& y
  326.   flagnum++;
    ! r- N- j; y+ L9 F! W8 }: I  Y
  327.   flag[floatx][floaty]=1;3 j4 D0 \7 Q; t+ z& |! l9 w
  328.   position(floaty*2,floatx);$ v, K( k5 A$ J  @3 ]2 s- W( @/ O
  329.   SetConsoleTextAttribute(handle_out, FORE_BLUE);" n+ b  p# g& N
  330.   Lump(floatx,floaty);
    $ c7 q- n8 M+ v/ s
  331.   }
    7 |1 n; z+ {' I- t1 ~" v5 F
  332.   
    " m! ^# r! b9 I  L' H
  333.   
    6 k; F, c9 {3 E  l* L8 F0 H
  334.   else {
    ( \& }' V: T" A8 @( b5 h
  335.   flagnum--;
    ; y/ _4 }6 f: S( f2 p
  336.   flag[floatx][floaty]=0;
    / V3 y2 t* v# u5 r. d9 X
  337.   position(floaty*2,floatx);
    % ~6 ^  @  O+ h+ ?- L7 @' V) K/ F
  338.   SetConsoleTextAttribute(handle_out, FORE_BLUE);  a4 ~$ {8 c, L
  339.   Lump(floatx,floaty);7 J3 F0 w5 B* n
  340.   }
    9 B9 C4 E5 @% z- D& O, m6 Z7 A
  341. }4 `* X/ [1 ^9 g4 @6 `
  342. }
    ( G: Q& f+ E' t7 W
  343. : J( {8 B! q! T- h9 c
  344. 5 c0 o* C; u. c. ^* q. J
  345. if(spare==' ') Mode();
    7 _! s0 @7 Z4 `. E5 K

  346. 6 n. w4 k) p! F2 u& Y
  347. //按方向键
    % _. @+ i% R" i
  348. if(spare==-32) {
    1 j$ i5 C7 h1 `) ~8 ^
  349. news=getch();
    7 l% x( \3 l- s0 q. d
  350. Move();
    ) o4 A+ ]4 ~0 L9 _" E0 f+ A' }
  351. }
    / X: [& p4 N# l' H0 G
  352. for(int i=0;i<A;i++) for(int j=0;j<B;j++) if(map[i][j]=='x'||(map[i][j]>'0'&&map[i][j]<'9')) game++;
    # Z+ p) T0 c1 ~# y: h( r% k
  353. if(game==A*B-C+1) break;" t+ x3 j3 ~9 p' Y4 z- A  t' I
  354. else game=1;
    ; ]. n$ W2 k4 p5 Y
  355. SetConsoleTextAttribute(handle_out, FORE_RED);
    + Z; S% E. g+ f
  356. position(44,5);
    2 C5 h- r6 S" T/ [" ^1 u
  357. printf("剩余雷数:%d ",C-flagnum);2 `! b1 s! w9 J5 m; x+ t' {
  358. }
    % x! a  m  J1 [8 V& G+ a* O
  359. else Sleep(10);  ^* g1 @4 ^  x# y* }
  360. b=GetTickCount();
    2 n: w. r! d8 ]' f- U4 }# E- l& ~6 l
  361. SetConsoleTextAttribute(handle_out, FORE_RED);
    3 `$ f4 J7 ?! }( b* L9 e7 l' t* J
  362. position(44,7);
    9 }5 X' ~; K* O( I# i9 `
  363. printf("用时:");
    $ P" X$ i$ ^* R: W: X
  364. if((b-a)/60000<10) printf("0");8 c! c/ M5 q8 t7 J' g9 P- F
  365. printf("%d:",(b-a)/60000);* Y' X. n0 I" O- x- T! S
  366. if(((b-a)/1000)%60<10) printf("0");
    - P4 [5 h$ R, N5 B  k) w3 A( R
  367. printf("%d:",((b-a)/1000)%60);9 F% |1 I) a' _  r1 T  ^
  368. if(((b-a)/10)%100<10) printf("0");; Z5 ?* H. ]6 w$ Q4 a: e3 f
  369. printf("%d",((b-a)/10)%100);
    % V, e" U) K4 D0 L! x6 e! R0 L
  370. }" ?1 Q- G6 o4 P* L7 U4 v4 s/ [
  371. SetConsoleTextAttribute(handle_out, FORE_RED);
    % [: v0 u$ ^2 G$ \* y) w8 ~2 i' E: P
  372. position(5,5);
    0 N5 V0 c, |! E( B. R  X: [$ M
  373. if(game==1) printf("游戏结束!");5 d6 E, N: a  A) Z
  374. else printf("恭喜通关!");4 F  @0 {3 v7 e. f/ L
  375. position(5,8);
    , B  ]8 [' p2 j) `9 V: H4 t
  376. printf("任意键重玩");( r& T1 ?& }( X& @0 L' v8 _6 y* @
  377. scanf("%c%c",&spare,&spare);
    7 ?$ Z1 e/ w4 L5 C$ R: m. u
  378. system("cls");
    9 Z2 u' q3 c( L, f% p/ |1 u6 V" c
  379. position(0,0);
    : }  g5 U8 G+ J
  380. goto Relife;0 H' n- w; M! w! t; ?; x
  381. }
复制代码

6 v' z9 G% t( v' p
+ `" X( E& L  t+ i% E1 ~, c$ k" D) T8 }; ?

本帖被以下淘专辑推荐:


tel:181 5707 6602
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册!

本版积分规则

QQ|手机版|小黑屋|网站地图|动象论坛

GMT+8, 2025-1-31 02:05 , Processed in 0.188975 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表