怎么在c++中利用EasyX实现一个扫雷游戏

  介绍

这篇文章给大家介绍怎么在c++中利用EasyX实现一个扫雷游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

# include  & lt; cmath>   # include  & lt; time.h>   # include  & lt; easyx.h>   # include  & lt; conio.h>   using  namespace 性传播疾病;   # define  Size  500年,//定义窗口大小   # define  SquareSize  50,//定义格子大小   # define  BackGroundColor  LIGHTGRAY //定义背景颜色   时间=const  int  N  Size /, SquareSize;,//设置地图大小为N  *, N   时间=const  int  Num  N  *, N /, 5,,//设置总地雷数   int  num =, Num,, all =, N  *, N 作用;Num;,//剩余地雷数和未格子访问数   int 地图[N  +, 10] [+ N  10];,//地图表示(i, j)旁边的地雷数目,等于1表示该位置为地雷   bool  vis [N  +, 10] [+ N  10];,//标记是否(i, j)被访问   bool  vis_lm [N  +, 10] [+ N  10];,//标记(i, j)是否被标记为地雷   int  dx [],=, {, 0, 0, 1, 1, 1, 1, 1, 1,};   int  dy [],=, {, 1, 1, 0, 0, 1, 1, 1, 1,};   void  Init (), {   ,initgraph(大小、,大小);   ,setbkcolor(写成BackGroundColor);   ,settextcolor(黄色);   ,settextstyle(25岁,0,,_T(“宋体“));   ,清除设备();   }   void  BuildGameMap(),{,//构建地图   ,将srand ((unsigned  int)时间(NULL)),,//产生随机数   ,for  (int 小姐:=,1;,小姐:& lt;=, Num;, + + i), {   ,int  x =, rand (), %, N  +, 1, y =, rand (), %, N  +, 1;   ,while  (Map [x] [y],==, 1), {=,,x  rand (), %, N  +, 1, y =, rand (), %, N  +, 1;   ,}   ,地图[x] [y],=, 1;   ,}   ,//计算每个格子旁边的地雷数目   ,for  (int 小姐:=,1;,小姐:& lt;=, N,, + + i), {   ,for  (int  j =, 1,, j  & lt;=, N,, + + j), {   ,if  (Map[我][j],==, 1),继续;   ,for  (int  k =, 0;, k  & lt;, 8;, + + k), {   ,if  (Map[小姐:+,dx [k]] [j  +, dy [k]],==, 1), + +地图[我][j];   ,}   ,}   ,}   }   void  InitGameGraph(),{,//地图初始化   ,memset(地图,0,sizeof(地图));   ,memset (vis,,假的,,sizeof (vis));   ,memset (vis_lm,,假的,,sizeof (vis_lm));   全国矿工工会,num =,,, all =, N  *, N 作用;Num;   ,BuildGameMap ();   ,清除设备();,//清屏   ,setfillcolor(白色);   ,for  (int 小姐:=,0;,小姐:& lt;=,大小;,小姐:+=,SquareSize), {   ,行(我,,0,,我,,大小);   ,}   ,for  (int 小姐:=,0;,小姐:& lt;=,大小;,小姐:+=,SquareSize), {   ,行(0,,我,,,,我);   ,}   }   int  Translate_X (int  x),{,//左边变换   ,return  x  *, SquareSize  +, SquareSize /, 2;   }   void 败阵(bool 标签),{   ,RECT  r =, {, 0, 0,, Size 作用;1,Size 作用;1,};   ,if (标签),{   ,drawtext (_T (“Win"),,, r, DT_CENTER  |, DT_VCENTER  |, DT_SINGLELINE);   ,}   ,else  {   ,//游戏失败画出所有地雷   ,setfillcolor(红色);   ,for  (int 小姐:=,1;,小姐:& lt;=, N,, + + i), {   ,for  (int  j =, 1,, j  & lt;=, N,, + + j), {   ,if  (Map[我][j],==, 1), {   ,if  (vis_lm[我][j]),继续,,//该地雷已被玩家标记,跳过   ,outtextxy (Translate_X(小姐,安康;1),,Translate_X (j 安康;1),,& # 39;x # 39;);//否,则显示出来   ,}   ,else  if  (vis_lm[我][j]),{,//玩家标记了错误的地雷,标红   ,fillcircle (Translate_X(小姐,安康;1),,Translate_X (j 安康;1),,SquareSize /, 2,安康;10);   ,}   ,}   ,}   ,drawtext (_T (“Failed"),,, r, DT_CENTER  |, DT_VCENTER  |, DT_SINGLELINE);   ,}   }   void 帮助(),{,//调试函数(其实是挂)   ,for  (int 小姐:=,1;,小姐:& lt;=, N,, + + i), {   ,for  (int  j =, 1,, j  & lt;=, N,, + + j), {   ,if  (Map[我][j],==, 1), {   ,outtextxy (Translate_X(小姐,安康;1),,Translate_X (j 安康;1),,& # 39;x # 39;);   ,}   ,}   ,}   }   void  StartGame (), {   ,Init ();   ,while (真实),{   ,InitGameGraph ();   ,//帮助();   ,bool  IF_WIN =,真的;   ,while  (all  | |, num),{,//胜利条件是所有非地雷格子均被访问且所有地雷均被标记   ,MOUSEMSG  msg =, GetMouseMsg();,//获取用户鼠标信息   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在c++中利用EasyX实现一个扫雷游戏