用户名  找回密码
 立即注册!
img_loading
智能检测中
帖子

小喇叭+ 发布

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
查看: 1471|回复: 0

扫雷圣诞节特别版

[复制链接]

11

主题

57

回帖

585

积分

清正廉明~版主

风纪委员

积分
585

最佳新人活跃会员

发表于 2020-7-18 11:07:14 | 显示全部楼层 |阅读模式 IP:浙江嘉兴
  1. #include<stdio.h>
      ?! J5 X; b% t9 c9 }( f1 O4 ~4 O
  2. #include<windows.h>
    * y3 Q. W* i3 I+ ~4 ]3 @7 P6 [
  3. #include<stdlib.h>9 [+ J' X$ G9 [$ m4 w
  4. #include<time.h>+ Z. L/ e/ C- P+ \' W. U& o
  5. #include<conio.h>$ c0 Q* N5 P  T+ M- Q. @
  6. #include<queue>
    3 P* x9 }) A* b+ B
  7. #include<ctype.h>4 t. A" g5 [6 T* f# B
  8. #define A 17 //地图的高* p: {( J  G/ p/ W6 }& N
  9. #define B 17 //地图的宽0 t% `4 Y9 G; L+ Z6 l. o
  10. #define C 30 //雷的总数2 d7 T/ R: H$ v2 I. }4 A
  11. using namespace std;
    " K! ?' g) _2 ~5 z% Q9 A& V4 `

  12. ; s4 [# i0 Q3 ^7 E0 ?9 X# i
  13. //全局变量
    5 m; j# @6 T0 r2 A: o- b( P0 \
  14. DWORD a,b;+ Q8 y( u1 U, U- L
  15. char map[A][B],news,spare;
    # U% N3 H% O& |( T6 g" L" U- _: P
  16. int BoomTotalNum,floatx,floaty,flag[A][B],flagnum,mode,slect[A][B],game;
    ; d' p" ?; ^! ]

  17. 6 T2 g: d9 ~; [) q- R  s$ B
  18. //颜色属性8 q! ?; p* S: l8 s, _9 p1 G
  19. const WORD FORE_BLUE = FOREGROUND_BLUE; //蓝色文本属性
    + v" X8 ?! V/ V# t
  20. const WORD FORE_GREEN = FOREGROUND_GREEN; //绿色文本属性5 K6 O. e  K- q: I) {; w+ k! ]
  21. const WORD FORE_RED = FOREGROUND_RED; //红色文本属性5 s0 H0 u8 u) u  `( v) F# e9 C

  22.   i& [: E6 H' z9 c
  23. //开垦地图结构体
    * H7 @! H; O4 d
  24. struct node {! `; d. n, K& O# v& X
  25. int x;' F, d1 J8 q: o- `4 b
  26. int y;# ?3 G7 U+ z4 y/ k5 S5 x
  27. };
    3 o  r. A7 O5 C% V+ s
  28. queue <node> dui;1 l" C* T! Z" m4 D! ?- @0 W

  29. $ o7 S  |- Q/ V% @1 g% X
  30. //打印位置
    ) j% Y* w; t- Y% y: ^5 @
  31. void position(int x,int y) {, O; _5 _  E4 W/ J: j) J
  32. COORD pos={x,y};
    + @% ^$ y2 c# h) T
  33. HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);% Z4 M' }/ `/ t6 b7 v
  34. SetConsoleCursorPosition(Out,pos);
    ) m* h1 N" I4 k! ]& P  M, _+ }  l: F2 f
  35. }
    ' x. q  I& a# M: S" V9 }

  36. + j( G& r' c! O. n
  37. //隐藏光标
    % w( v, h0 k" H5 q$ U: R$ Q
  38. void Hide() {0 `1 D; m9 v( V0 R8 J2 z: D( h7 ~
  39. HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    / v. C8 W/ b+ y. j
  40. CONSOLE_CURSOR_INFO CursorInfo; / W/ N7 s5 a6 I2 U
  41. GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息 & b1 Q- N4 L* b
  42. CursorInfo.bVisible = false; //隐藏控制台光标
    ) B; c; N1 P: n, p$ n
  43. SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态 + t# v# s+ {9 ?+ `; N$ }
  44. }2 ~' `: e4 K/ [6 ?

  45. 7 k3 v  A- x0 W! x4 V* G6 j
  46. //初始化. D  f; k- t/ x
  47. void Beginning() {" y. `; u" m+ X( Y+ L9 J
  48. while(!dui.empty()) {
    5 O$ E) j7 I" U/ W1 U
  49. dui.pop();& U0 I# g1 B& i% u/ c1 k
  50. }# t* a  w/ f1 R# q2 x1 E
  51. game=1;# s6 |2 _. [3 f: m- y; g
  52. //BoomTotalNum=C;- S6 D( o* B& m& ]/ ^, k
  53. floatx=A/2;, t" H# M. n/ s( f3 U
  54. floaty=B/2;4 O5 Q' @8 K) O1 H
  55. flagnum=0;+ ]( ]: I. Z7 h  }
  56. BoomTotalNum=C;
    7 l' h  R/ S" _4 W. k. a- d
  57. mode=0;& L9 n8 X& N$ h) m2 m
  58. HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 6 m  H- _+ ?7 }0 g1 t
  59. CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体
    2 o3 ?4 o( b4 g' K* f9 R2 `1 n
  60. GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息( C  r! o  A! V& K$ N  m
  61. int x,y;
    + M: q( S& l! S, d
  62. srand((unsigned)time(0));- S. _& h" O3 p' m, y
  63. for(int i=0;i<A;i++) for(int j=0;j<B;j++) {, O6 P/ p- ]( [6 s# Z+ `
  64. map[i][j]=' ';0 |6 p1 ^3 G- h& p. \0 f
  65. flag[i][j]=0;
      B& t* k3 u5 s- P0 r) m- c1 ]( Q. U: t! F
  66. slect[i][j]=0;- n- t6 o% P+ G4 o- h
  67. }$ D& w: L* Q* z9 C: Q' W' Q; D
  68. while(BoomTotalNum) {
    2 ?$ L- A' w5 Y! m5 V4 s4 d$ X1 @2 q5 l2 q
  69. x=rand()%A;
    , P. a* L; h- V6 _
  70. y=rand()%B;7 X9 }9 H4 R1 O) W" Q% n7 l; c" d
  71. if(map[x][y]==' ') {9 g) D2 n% @6 [+ U
  72. map[x][y]='@';- n, W' W. U1 m
  73. BoomTotalNum--;
    - E% m* N0 W& W0 ?0 B$ J8 j
  74. }
    $ y/ d% E+ {" H! s
  75. }
    ( k: R* A/ e  s) |
  76. SetConsoleTextAttribute(handle_out, FORE_GREEN); 4 S" J6 ~9 R) k+ _% i
  77. for(int i=0;i<A;i++) {
    # M1 X" k( ?+ X8 T
  78. for(int j=0;j<B;j++) printf("█");9 I; g$ X( a7 z+ T0 ^/ I
  79. printf("\n");
    * I7 w% A3 C/ n1 \( K% \
  80. }- K( B0 b% T- M  w, C7 R
  81. position(floaty*2,floatx);8 ?4 m. m5 A% c- Y* F' ?
  82. SetConsoleTextAttribute(handle_out, FORE_RED);
    / M, j4 |3 Z& ~- w" U
  83. printf(""); //光标位置
    . a! E: a: r9 @& X( i* J
  84. position(44,9);  q: C) d- j: Z7 H; Q8 W8 G. Y
  85. printf("扫雷模式");8 M: x& m* T! b, B. i) B
  86. position(44,5);
    7 l& o' |) C! D6 |
  87. printf("剩余雷数:%d ",C-flagnum);6 l3 W3 M: J5 f9 P
  88. SetConsoleTextAttribute(handle_out, FORE_GREEN); $ Y+ s( \- L) n) |- J2 F' I
  89. position(5,22);
    & Y6 p3 y) T+ W& A2 a
  90. printf("按“空格”切换模式");* O& S* x6 v9 Z+ ^+ c7 J# O
  91. position(5,23);
    0 c- T. }1 [" a+ A3 Y7 V
  92. printf("按“Enter”确认");
    # A" g$ _2 ~, j. \# ^% o
  93. position(5,24);# A  }4 P  e; S! T8 l! s) m+ x
  94. printf("按“方向键”选择方块"); $ X/ K' t+ ^0 ~. @% u" @
  95. - Z2 L' B! r5 t: O8 y
  96. }' g* Y+ I2 k$ [! w( o. M- t, W

  97. % o# q" p( r/ c
  98. //打印地图的一块儿
    ) G: B7 H1 p) u* v
  99. void Lump(int xx,int yy) {: a: m+ P, W/ ?/ {
  100. switch(map[xx][yy]) {
    ! ~5 Y1 h( U, Y/ N
  101. case '1' : printf("①");break; //周围雷的数量(下同)
    , x" \3 O& h$ {. {5 w& [
  102. case '2' : printf("②");break;3 L% [( M4 h6 q4 x" V! n1 v
  103. case '3' : printf("③");break;
    ( ?! J4 \) m7 n7 M3 K) H& z+ j( M
  104. case '4' : printf("④");break;7 F+ }  J+ Y3 a
  105. case '5' : printf("⑤");break;4 _* V5 e7 e4 k0 @7 a9 F4 n
  106. case '6' : printf("⑥");break;
    # K6 C/ e/ Y& d+ E/ a* w
  107. case '7' : printf("⑦");break;
    " h/ o0 q8 c% j- h- d; f+ a1 h
  108. case '8' : printf("⑧");break;
    2 x( |- T2 v2 i- J. T
  109. case ' ' :
    $ K0 U& Z' w& J( |4 l( l
  110. if(xx==floatx&&yy==floaty) {* T" @' e: q. _
  111. if(flag[xx][yy]==0) {
    1 g- D  }( _2 G4 t
  112.   if(mode%2==0) printf("");
    ; a5 P, C$ q/ q$ |9 E' K) E0 i
  113.   else printf("");
      U# A  o' P9 j$ ?5 d
  114. }
    7 D+ g. Q6 ?6 t5 V
  115. else printf("");0 c, F' k/ g0 m/ c; g5 a
  116. }
    % {& y& w$ D6 \; ~! T8 F2 L% k
  117. else {: C4 }; z- x  R; c5 z$ r( ?
  118. if(flag[xx][yy]==0) printf("█");
    : x/ ?+ |- h- q- D6 [2 T6 t: P
  119. else printf("");
    , e6 e9 n3 `$ z
  120. }! p1 y0 E' p3 N; J/ g, D
  121. break;
    5 p8 e, h4 o4 m. A8 d5 v
  122. case '@' :
    , u% P9 Y1 ~& E+ P# _
  123. if(xx==floatx&&yy==floaty) {
    : r" |# }8 q1 R# P& F! g  y; G+ {, L
  124. if(flag[xx][yy]==0) {, b& o6 I* q# {" n, t7 a# s' d! e
  125.   if(mode%2==0) printf("");
    : F- A/ ~% U! I6 [& j  |) W
  126.   else printf("");* k9 h1 k" D0 F. e+ X/ S2 o9 g
  127. }" g( E7 e' s* i; u
  128. else printf("");! y- H3 d0 Q0 y7 z% q. N
  129. }
    0 G$ y' F- q$ V6 @1 C5 U+ ~+ v
  130. else {
    4 |, G: _+ `- D& N8 }+ M
  131. if(flag[xx][yy]==0) printf("█");
    $ A7 ]8 r" K7 y! [7 }) `
  132. else printf("");
    & @! ~, X) ]# ?" l
  133. }
    % y* F4 K1 t! v6 A" W+ B- ?
  134. break;8 a* }9 R1 d" n+ Z2 c( A
  135. case 'x' : if(floatx==xx&&floaty==yy) printf(""); else printf(" ");break; //已经挖开的空白* h. O9 C( I+ ?5 {0 }
  136. }6 B; d! X  Y6 n4 @  S: s4 M
  137. }: V& @/ R3 w' g6 R

  138. - j7 W' I% A- F0 ~. L
  139. //移动光标; M! D7 X% m5 t8 k$ ]9 d
  140. void Move() {
    5 Z4 x1 M* V: k, e
  141. HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 0 T  L* ]4 y+ ]5 V- H
  142. CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体
    3 h( s- q+ D" V. p; [
  143. GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息+ k6 B" q" V" T6 |% I
  144. int xxx,yyy;
    / o+ A  r$ Y) E  D
  145. xxx=floatx;
    ' Z; X. k% X6 V. t. ?8 h/ H4 I
  146. yyy=floaty;7 h$ W6 U7 x, R2 d! S
  147. switch(news) {
    ! c' ?/ O/ e. }$ j( ^. ]
  148. case 72 : floatx--;break; //上
      W1 `0 z. Z" u  ?( f- K
  149. case 80 : floatx++;break; //下
    8 J6 u  B) [& S, u7 P
  150. case 75 : floaty--;break; //左 5 Q2 B: v* A% y( }9 x+ k
  151. case 77 : floaty++;break; //右
    6 Q( y0 e8 k; I# B
  152. }
    3 Y: s0 V1 ~; o! J
  153. if(floatx==-1) floatx=A-1; floatx%=A; //两端穿模处理 6 b3 Y4 [& {; O8 e( b
  154. if(floaty==-1) floaty=B-1; floaty%=B;
    6 u& c, X# \3 o( f& \

  155. ; a" b4 s$ G3 K6 J( `5 B
  156. position(yyy*2,xxx);* ^- q1 P  X1 b4 r' {8 n3 Y: X9 T6 C: V
  157. SetConsoleTextAttribute(handle_out, FORE_GREEN);* u2 ]0 j" f3 V9 S& s% `
  158. Lump(xxx,yyy); //删除原位置
    4 }7 j4 m! S7 R0 N, V2 D6 E
  159. , _. `% S* B. Z$ m' o6 O! \
  160. if(map[floatx][floaty]=='x') {) a! o' S/ J1 H& l* F
  161. position(floaty*2,floatx);  {" o/ U5 {& I- B3 \7 e* `
  162. printf(" ");6 G/ B; k5 P# U, }; E
  163. }# a8 Y" W' M1 W  w0 j% |6 S$ x
  164. 3 }+ R' D2 b% I* t$ I
  165. position(floaty*2,floatx);/ Y: u5 c; m$ G. S
  166. SetConsoleTextAttribute(handle_out, FORE_BLUE); 9 z0 S; A6 {) w6 I( X8 |" q
  167. Lump(floatx,floaty); //更新新位置
    2 w; C- n3 N& N, o
  168. }
    ) J* X: Z' M. o& g, D

  169. : j1 X9 J: f4 z/ K: h
  170. //插旗和排雷模式切换
    9 M9 u9 K" h( c! {
  171. void Mode() {$ s: c" m- ~8 V/ S5 u
  172. HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 7 {6 I6 g" L7 e+ f# U' M( e4 t9 j
  173. CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体 * |0 G+ {2 m" X
  174. GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息
    , ~% |$ Y5 r, `% q0 k, e
  175. mode++;
    ) m3 ^4 x2 z* k" `, O& v+ D+ S
  176. SetConsoleTextAttribute(handle_out, FORE_BLUE);8 V+ @5 J3 O- W9 |; W
  177. position(floaty*2,floatx);
    # u; D& G' [1 Y/ X1 t' S, M
  178. if(mode%2==0) printf("");2 ]0 ^" \1 K; U# J
  179. else printf("");
    . d7 H& Q7 _& Y8 ]' H6 T% u) g7 Z
  180. 6 s. l; Y$ d) A9 Z8 x3 N8 d
  181. position(44,9);* j5 {' q5 B) i( S6 N2 J/ A- Z
  182. if(mode%2==0) {
    ) \9 o4 j4 T% C% ]4 ~
  183. SetConsoleTextAttribute(handle_out, FORE_BLUE);
    0 H: V; a6 s$ g* ^6 W( B+ h
  184. printf("扫雷模式");
      L4 \6 v7 `8 L( C' r$ R+ x
  185. }
    6 Z& P; N: j  H8 `. p$ B
  186. else {, p: ^2 f3 n. Y" @" w: R, C  }6 N
  187. SetConsoleTextAttribute(handle_out, FORE_RED); , W% M% T2 u, E/ @
  188. printf("插旗模式");& p: b5 g5 c4 u2 P! f+ k; Z3 t
  189. }
    ) z& c; S7 f( Y$ p! }( C
  190. }
    : G( A* q7 k$ p! p; r, w
  191. ( I$ O3 Q8 F9 s& q) e3 |9 c$ p! U
  192. //该点周围地雷数
    0 _9 u& e" b. w) V: [3 \
  193. int Boomnum(int xx,int yy) {( K7 P2 [; Z# t  N
  194. int num=0;" T/ W) u. ~  m& i, l
  195. if((xx-1>=0)&&(yy-1>=0)&&(map[xx-1][yy-1]=='@')) num++;5 {5 h7 y5 G& I  l; O. }
  196. if((xx-1>=0)&&(yy+0>=0)&&(map[xx-1][yy]=='@')) num++;
    2 Z- {. o  L: j- p# Y- v
  197. if((xx-1>=0)&&(yy+1<B) &&(map[xx-1][yy+1]=='@')) num++;3 C4 o6 _% e( w3 R
  198. if((xx+0>=0)&&(yy-1>=0)&&(map[xx][yy-1]=='@')) num++;
    - D2 \( x( G0 n+ `
  199. if((xx+0>=0)&&(yy+1<B) &&(map[xx][yy+1]=='@')) num++;
    7 u( D( K9 J$ k, v; Y
  200. if((xx+1<A)&&(yy-1>=0) &&(map[xx+1][yy-1]=='@')) num++;
    ' b9 D  ]; f" k; s' r8 I/ P, A
  201. if((xx+1<A)&&(yy+0>=0) &&(map[xx+1][yy]=='@')) num++;
    $ ^2 R  z; S/ _5 g
  202. if((xx+1<A)&&(yy+1<B) &&(map[xx+1][yy+1]=='@')) num++;
    # x7 T9 ~4 O5 U* n, v" P7 `
  203. return num;& P# d" m& o8 Y: g1 q4 l2 z* g
  204. }
    ! E1 i. i5 _" _! N0 W

  205. ( j( D; n- V2 _: F3 B( h7 q0 @* w: {
  206. //更新地图
    2 z1 `2 G/ {# g  @- X
  207. void Open() {7 ?4 ^4 U# E  [
  208. node c;% q8 [" L$ E1 N: l3 T
  209. node d;) p# Z* s1 t' m
  210. while(!dui.empty()) {
    7 b/ O+ n0 X+ j: @
  211. dui.pop();
    2 q9 u+ ]- @' c' f/ T6 |" M
  212. }( p! w7 b# Z, |1 q6 F
  213. c.x=floatx;
    * p( O# Z& h$ N3 `( ~' k
  214. c.y=floaty;( K% L" \5 s! Z* G4 ^8 q0 r
  215. dui.push(c);
    # K9 p9 b& @- T& X/ A
  216. slect[c.x][c.y]=1;0 Y" {3 F8 ?/ m: Y0 r/ b, c, {
  217. while(!dui.empty()) {6 g+ x' `6 t% I$ ]; k
  218. c=dui.front();( `# F  k- J  I
  219. dui.pop();" \7 y8 X2 |" U( ~* L$ C
  220. if(Boomnum(c.x,c.y)!=0) {
    : K/ V" C) v$ n$ e
  221. map[c.x][c.y]=(Boomnum(c.x,c.y)+48);2 T2 T8 V9 f7 G; e4 J, e+ }; C
  222. continue;
    . \) B. k, k. b
  223. }3 ?6 \7 ]% {* g5 n
  224. else {
    , ?" X; q, P8 Q, R9 J5 p; J
  225. map[c.x][c.y]='x';                                                                                                         
    0 _: w( k! `! }9 M
  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)) {7 A' G2 C/ \! l! W7 P& q, F; ?' j
  227. d.x=c.x-1;6 p1 h7 ^. G$ S5 m
  228. d.y=c.y-1;
    4 }: V: M- E6 D
  229. dui.push(d);
    & s, P* q7 o4 {7 W
  230. slect[d.x][d.y]=1;# Y: y' `: G0 @9 r! l
  231. }/ n, C0 o0 [  [+ @# N& {
  232. if((c.x-1>=0)&&(c.y-0>=0)&&(map[c.x-1][c.y]==' ')&&(slect[c.x-1][c.y]==0)) {
    : b; ~4 K* x/ w- j
  233. d.x=c.x-1;6 S  [. b, R! i3 m- T8 a, v
  234. d.y=c.y-0;
    . @* x. B  H! r( N7 G
  235. dui.push(d);
    ; P+ O0 w& h* R9 c
  236. slect[d.x][d.y]=1;
    & w8 {& [; _$ w/ ^$ p1 O
  237. }, y# E" j  T  S( t
  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)) {8 V" \& J- V6 A
  239. d.x=c.x-1;
    8 z$ l& |% }$ m6 v- a
  240. d.y=c.y+1;
    , D2 `# t$ L( B0 l
  241. dui.push(d);/ b2 P# f# S; z, s+ A( [  {
  242. slect[d.x][d.y]=1;
    7 i" |( a3 [7 Z+ a) ~
  243. }
    / l5 u' O/ m* B% j& j* L) E8 W& L$ r: K
  244. if((c.x-0>=0)&&(c.y-1>=0)&&(map[c.x][c.y-1]==' ')&&(slect[c.x][c.y-1]==0)) {! Z8 i# @: }- y2 I8 b
  245. d.x=c.x-0;/ r+ d5 ]8 }9 H, C# p, Y" k
  246. d.y=c.y-1;# L0 c6 w7 k0 z% U) p5 n
  247. dui.push(d);, v( z: X3 w3 q
  248. slect[d.x][d.y]=1;
    & d8 c$ D$ R9 P1 _5 I
  249. }& d" \7 C  M- K8 _/ V
  250. if((c.x-0>=0)&&(c.y+1<B)&&(map[c.x][c.y+1]==' ')&&(slect[c.x][c.y+1]==0)) {+ P! U0 a, M, t1 \0 V8 V
  251. d.x=c.x-0;
    3 x# e9 u; A: w) b& o
  252. d.y=c.y+1;; b; ?+ r; A; c7 j& \
  253. dui.push(d);6 q3 k1 U# |7 O' @
  254. slect[d.x][d.y]=1;
    2 H% v" T; _$ j' g% o* c$ L' r& T
  255. }
    7 l8 d/ k# B, a; I1 C
  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)) {
    ; g& W6 E; r$ }2 E1 l0 L- k
  257. d.x=c.x+1;
    0 j! R2 q' S7 |2 r  M, q2 x) \
  258. d.y=c.y-1;. D- E; c# L1 ]% M& `0 `
  259. dui.push(d);$ v  G+ i  u  @/ ~! a/ F! e( `6 m
  260. slect[d.x][d.y]=1;
    + h3 L- c1 a# c2 R+ U8 i# S
  261. }
    % k+ Q9 R% [  O2 w5 ~
  262. if((c.x+1<A)&&(c.y-0>=0)&&(map[c.x+1][c.y]==' ')&&(slect[c.x+1][c.y]==0)) {3 |; C/ t5 x( q0 p" \. r; E4 T
  263. d.x=c.x+1;1 L0 k. d! z4 d- E
  264. d.y=c.y-0;
    : |. G2 r0 s' R7 ^2 r& ~6 O
  265. dui.push(d);
    # F2 C; Y4 a- z
  266. slect[d.x][d.y]=1;- q6 P/ L  s, i
  267. }
    5 Z1 M, E: @+ Q; g1 ?1 z  M+ o
  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)) {; Z, ]/ i- t( h" C. ]3 f
  269. d.x=c.x+1;
    : O5 O: g. {' k1 y: s* F! Y  Z
  270. d.y=c.y+1;9 U- b! Q3 L8 p0 M: q. D% z
  271. dui.push(d);% U$ R7 I# b: g) b2 d7 D7 C
  272. slect[d.x][d.y]=1;& d' Z1 Q( R% l# H
  273. }
    # n# [- r. V- H/ A
  274. }
    5 C' }' m. A2 ^. g! C
  275. }9 b$ A5 k4 d& T) `. T7 c; _
  276. }* D5 [+ \* X0 Y2 \1 L; F$ l
  277. ( b# P9 b0 P. H
  278. int main() {
    * `$ I( }0 x+ ^: l1 F" x$ t
  279. freopen("排名.txt","r",stdin);0 S6 ?8 r+ {! n7 w6 g
  280. Relife: //重玩处
    1 r( x. Q4 W' J( y- E, y, @4 @
  281. HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄
    6 [1 b2 ^/ {2 ~: P- T: k6 w
  282. CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体
    " }% A; [$ n' n2 h0 k2 k/ Q
  283. GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息
    5 V; z! J8 s. \9 |
  284. 5 }+ r6 b5 g/ L2 M; ^
  285. Hide(); & H& {# T& H7 o; j+ v+ J* J; R
  286. Beginning();
    ( `1 ]/ B, Y8 i
  287. a=GetTickCount();
    1 [; P+ c9 Z" `: y  k6 }7 D
  288. while(1) {
    ! f) x2 N$ s8 e0 N& B
  289. if(kbhit()!=0) {
    8 @0 N8 v$ g6 g( }' ]. v9 t+ @% @% Z
  290. spare=getch();
    0 J7 x+ a) M: a' V0 a+ W5 q
  291. 6 ]8 P6 F% P$ U* M1 m
  292. + k! h! A! u; s2 d* k. |; S* W
  293. if((spare!=(-32))&&(spare!=13)&&(spare!=' ')) continue;5 |/ O( l- C( P( w1 K
  294. 9 H4 T* D1 e( t* F

  295. : c0 E. ~7 d4 K$ J1 _* d
  296. if(spare==13) {;% A' f4 E1 ~2 L7 I7 C
  297. ; ?$ f/ ]% V: @$ F
  298. if(mode%2==0) {/ Z( l  T  x! |: ?" Q/ x+ t
  299.   if(map[floatx][floaty]=='@'&&flag[floatx][floaty]==0) {2 n8 |- p6 @) U; h& Y2 q5 q' ^
  300.   break;
    ! i6 t. ?6 ]" V* ^: `! w
  301.   game=0;( z0 A4 m" S& ?# c% K% R
  302.   }
    / r7 X7 q0 b/ g1 o3 Q7 V2 i8 D
  303.   
    * G& n) @) B5 z; i
  304.   if(flag[floatx][floaty]==1) continue; : U, v/ |8 ?" T! L1 }6 K* P
  305.   Open(); 5 G+ h0 t3 }# K
  306.   position(0,0);
    - y- s- E7 C( s" }
  307.   SetConsoleTextAttribute(handle_out, FORE_GREEN);
    2 z# g- C& r3 R- w( p
  308.   for(int i=0;i<A;i++) {. e  P. {: K2 X* b. f' f
  309.   for(int j=0;j<B;j++) Lump(i,j);
    * m6 P. f7 x+ _9 J' ~% T
  310.   printf("\n");
    0 k4 l- s0 i2 u1 D0 z0 Q5 ^
  311.   }8 ^8 f* A! d4 Y1 R, ^7 @
  312.   position(floaty*2,floatx);  V3 m. R9 J; p# F; ~0 P$ z
  313.   SetConsoleTextAttribute(handle_out, FORE_BLUE);6 U+ @+ t. I% N8 [
  314.   Lump(floatx,floaty);
    ' }) Q. p5 D% f
  315. }- P, b" a, I* R

  316. + A' C( t! ^) K8 p7 }

  317.   v- G8 }: b4 }. S
  318. else {8 u, D* u) r' l4 t& J
  319.   
    0 u0 s) I6 ~( m& {
  320.   3 U3 `0 Q2 A6 L, U7 ^# g# }
  321.   if(map[floatx][floaty]=='x'||(map[floatx][floaty]>'0'&&map[floatx][floaty]<'9')): O1 S2 W( h2 P+ R3 L- o- P+ ]6 m& m
  322.   continue; - S& |2 n( I1 H9 f% _0 x& h
  323.   
    ; _+ {. K% [  _; @2 y
  324.   / }( R# K4 `* x3 e
  325.   if(flag[floatx][floaty]==0) {) C- k) \; f) B. K4 \( l
  326.   flagnum++;3 Y- q+ T! \* E5 Y# h
  327.   flag[floatx][floaty]=1;
    . M% i+ ~) a$ T2 l6 p5 o* o$ ^  {
  328.   position(floaty*2,floatx);
    - j  C2 o* |7 o, H6 ~  |
  329.   SetConsoleTextAttribute(handle_out, FORE_BLUE);
    - L5 }" s  _3 J" Q& w0 i
  330.   Lump(floatx,floaty);
    3 I' ^& E1 D9 P& ?9 L
  331.   }
    6 D( X) ]% n7 E- ]* n  T- T+ d4 F9 A
  332.   3 I* s: y4 [( v9 \3 n( L
  333.   
    , B0 l' c+ K. s% P* h0 _; }
  334.   else {
    ; f* G% z0 M, C. x) t. N( ^( D& n
  335.   flagnum--;+ x: [3 h. E2 ?  o' r# u
  336.   flag[floatx][floaty]=0;5 y7 r9 h/ |7 b4 q
  337.   position(floaty*2,floatx);5 ~3 F* d, X" v: }4 |/ B+ g
  338.   SetConsoleTextAttribute(handle_out, FORE_BLUE);
    ' c" C9 t; q! p+ x7 w$ f7 q% h) i
  339.   Lump(floatx,floaty);% R8 f' o( K& ^" S* {( y
  340.   }8 x; Y) r, I: M+ p, t6 r
  341. }
    7 N- {" R/ i, c0 p+ d- z
  342. }
    ' e4 r* p0 s# ]  [; l1 Y( r

  343. 2 k9 U: U# Z+ @6 ^0 a( `8 U: E

  344. ; K$ d; g1 A3 ?+ o, x9 Y4 T/ u
  345. if(spare==' ') Mode(); 9 o+ V! N9 z7 W7 m) U
  346. 1 @1 E3 ?" m, e- G
  347. //按方向键 0 q# J. x" H8 x6 @
  348. if(spare==-32) {* [3 E' F/ N# J# O
  349. news=getch();
    , s2 {% G7 w& s# `! e6 d
  350. Move();
    6 g9 \" R2 Y  i7 U, C6 J
  351. }' e3 e+ ]6 I: p
  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++;
      X8 A  n5 y1 Q  V
  353. if(game==A*B-C+1) break;
    5 d! ^2 p) ^% L, A
  354. else game=1;. P% V4 v1 u/ Z
  355. SetConsoleTextAttribute(handle_out, FORE_RED);7 W8 e/ w: B7 H* r2 _2 E
  356. position(44,5);
    5 x( b4 v. o9 y% c3 ~' {8 g0 J
  357. printf("剩余雷数:%d ",C-flagnum);
    . @* {3 G" O2 o
  358. }
    9 t7 I3 _0 F, ]/ J
  359. else Sleep(10);# g. o: T$ R0 E& E, q: t
  360. b=GetTickCount();
    ' v: P9 ~! U" U% C
  361. SetConsoleTextAttribute(handle_out, FORE_RED);) k2 `. U" B( Q9 H* ]  }0 |; T
  362. position(44,7);' I; o5 }$ @7 Z7 H; D: m6 u* a
  363. printf("用时:"); / ]- @( g2 @$ A: ?" X( }! f2 ~
  364. if((b-a)/60000<10) printf("0");, F4 ^, O8 E  ~
  365. printf("%d:",(b-a)/60000);
    . [9 `( ~( g( |3 v3 {, j
  366. if(((b-a)/1000)%60<10) printf("0");8 v9 b6 Y- F! T: K2 A
  367. printf("%d:",((b-a)/1000)%60);
    " t3 ]4 E& D; M( l7 f. k! Q4 s
  368. if(((b-a)/10)%100<10) printf("0");4 V5 P$ \' g# S
  369. printf("%d",((b-a)/10)%100);
    9 P: h+ ?4 Y/ L+ _9 W
  370. }& w! u; E9 T2 g6 r: C/ }3 n- L
  371. SetConsoleTextAttribute(handle_out, FORE_RED);
    ( q+ m2 F5 [4 c
  372. position(5,5);
    1 n3 G) W+ S4 u+ ^/ A' s- D
  373. if(game==1) printf("游戏结束!");( d0 N. U2 [3 p7 q3 f+ i
  374. else printf("恭喜通关!");9 W2 D* h6 W3 l' e% W
  375. position(5,8);! ~8 u- k! J' y' g
  376. printf("任意键重玩");
    & d& Q+ V( Y6 U+ M; X$ B: K4 P/ n
  377. scanf("%c%c",&spare,&spare);
    ) m& w4 a: u2 l3 r
  378. system("cls");
    5 E) E% H( i) Z' n5 B% k
  379. position(0,0);+ e) F/ z9 F# G8 c" C3 ?/ r
  380. goto Relife;% c& B3 W2 M5 e* Z4 T" F. ~
  381. }
复制代码

! d& Z" R" d: C; m* y+ H0 C* i+ @. k; A! @- z4 j! T7 X* k
+ K: A4 k5 U" P, w. k% E

本帖被以下淘专辑推荐:


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

*滑块验证:
img_loading
智能检测中
本版积分规则

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

GMT+8, 2025-5-18 23:47 , Processed in 0.470769 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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