专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

项目实战C语言easyX带你实现扫雷游戏(六边形升级版)!

  每天一个编程小项目,提升你的编程能力!
  程序简介
  扫雷游戏升级版!六边形扫雷(寻宝模式)稍稍介绍一下哈
  他也是要把所有安全的地方点出来。
  他没有扫雷模式的消零算法。每一个安全的点都需要单独挖出来,一次显示一个格子。
  添加了生命值的概念,也就是说存在一定的容错。
  显示的数字有别于扫雷模式。点击宝藏点,会显示周围宝藏点数量,绿色;点击地雷,会显示周围地雷数量,黑色。注意,这个数字不包括自己,显示的范围自然就是06了。点击地雷会减生命值,生命值归零则结束。
  所以雷和宝藏都是有价值的,都是能给准确信息的。
  我能给一个参考难度:占总格子数40的地雷,占总地雷数50的生命值。
  【注:需要编译器图形库插件可以在文末领取】程序运行展示
  简单了解游戏后我们就来试试吧!(直接上源码,大家可以看注释)程序:六边形扫雷:寻宝模式includemath。hincludegraphics。hincludestringincludetime。hstaticdoublepiacos(1。0);圆周率staticHWNDhOut;画布定义一个结构体,按钮structNode1{intposx1,posy1,posx2,posy2;坐标LPTSTRtext;文字intmod;状态};定义一个结构体,六边形格子structNode2{inti,j,k;特征值intmodlife;翻开intmodmine;雷intmodflag;标记intposx,posy;坐标intnummine;周围雷数intnumpeace;周围空地块};定义一个类classGary{public:voidcarry();主进程voidinitialization();初始化voiddrawscene();绘制界面函数voiddrawbox(intnumbox);绘制格子voiddrawflag(intnumbox);绘制标记voiddrawnum(intnumbox,intnum);绘制数字voidmove();窗口主视角voidcreate();地雷生成voidcheckover();结束判定intnumbutton;按钮数量参数intexitcarry;主循函数控制参数intexitmove;开始界面控制参数intexitgame;游戏进行控制参数intnumlife;生命值intnumsize;边长intnummine;总雷数intnumbox;总地块数intnumflag;标记数COLORREFcolortext〔2〕;按钮绘制填充Node1boxm〔30〕;按钮,预制30个Node2box〔1000〕;地块};标记绘制函数voidGary::drawflag(intnumbox){setlinestyle(PSSOLID,1);setlinecolor(BLACK);line(box〔numbox〕。posx2,box〔numbox〕。posy7,box〔numbox〕。posx2,box〔numbox〕。posy7);setfillcolor(LIGHTRED);setlinecolor(LIGHTRED);fillrectangle(box〔numbox〕。posx72,box〔numbox〕。posy7,box〔numbox〕。posx2,box〔numbox〕。posy1);}数字绘制函数voidGary::drawnum(intnumbox,intnum){inti;画六边形,格子处于点击后状态setfillcolor(RGB(170,170,170));setlinecolor(RGB(85,85,85));POINTpts〔6〕;setlinestyle(PSSOLID,1);for(i0;i6;i){pts〔i〕。xlong(box〔numbox〕。posx14。0cos(60。0double(i)pi180。0));pts〔i〕。ylong(box〔numbox〕。posy14。0sin(60。0double(i)pi180。0));}fillpolygon(pts,6);数字绘制TCHARs〔15〕;settextstyle(20,0,T(Consolas));stprintfs(s,T(0。1d),num);outtextxy(box〔numbox〕。posx5,box〔numbox〕。posy10,s);}场景绘制函数voidGary::drawscene(){TCHARs〔15〕;inti,j;setlinecolor(BLACK);setfillcolor(WHITE);setlinestyle(PSSOLID,1);主界面fillrectangle(401,0,650,400);根据按钮数量绘制settextcolor(BLACK);for(i0;inumbutton;i){setfillcolor(colortext〔boxm〔i〕。mod〕);setbkcolor(colortext〔boxm〔i〕。mod〕);边框fillrectangle(boxm〔i〕。posx1,boxm〔i〕。posy1,boxm〔i〕。posx2,boxm〔i〕。posy2);文字outtextxy(boxm〔i〕。posx1(boxm〔i〕。posx2boxm〔i〕。posx1)2textwidth(boxm〔i〕。text)2,boxm〔i〕。posy14,boxm〔i〕。text);}设置参数setbkcolor(WHITE);settextcolor(BLACK);setlinecolor(BLACK);变量绘制j25;生命值i1;setbkcolor(colortext〔boxm〔i〕。mod〕);stprintfs(s,T(0。1d),numlife);outtextxy(boxm〔i〕。posx1(boxm〔i〕。posx2boxm〔i〕。posx1)2textwidth(boxm〔i〕。text)2,boxm〔i〕。posy1j,s);边长i2;setbkcolor(colortext〔boxm〔i〕。mod〕);stprintfs(s,T(0。1d),numsize);outtextxy(boxm〔i〕。posx1(boxm〔i〕。posx2boxm〔i〕。posx1)2textwidth(boxm〔i〕。text)2,boxm〔i〕。posy1j,s);总地雷数i3;setbkcolor(colortext〔boxm〔i〕。mod〕);stprintfs(s,T(0。1d),nummine);outtextxy(boxm〔i〕。posx1(boxm〔i〕。posx2boxm〔i〕。posx1)2textwidth(boxm〔i〕。text)2,boxm〔i〕。posy1j,s);格子i4;setbkcolor(colortext〔boxm〔i〕。mod〕);stprintfs(s,T(0。1d),numbox);outtextxy(boxm〔i〕。posx1(boxm〔i〕。posx2boxm〔i〕。posx1)2textwidth(boxm〔i〕。text)2,boxm〔i〕。posy1j,s);标记数i5;setbkcolor(colortext〔boxm〔i〕。mod〕);stprintfs(s,T(0。1d),numflag);outtextxy(boxm〔i〕。posx1(boxm〔i〕。posx2boxm〔i〕。posx1)2textwidth(boxm〔i〕。text)2,boxm〔i〕。posy1j,s);FlushBatchDraw();}地雷生成函数voidGary::create(){inti,j;设置雷for(i0;inummine;i){随机jrand()1000;while(box〔j〕。modmine1box〔j〕。modlife1){随机jrand()1000;}是雷box〔j〕。modmine1;}周边雷数统计遍历for(i0;i888;i){if(box〔i〕。modlife0){遍历for(j0;j999;j){排除自己if(j!ibox〔j〕。modlife0){周围六个if((box〔j〕。posxbox〔i〕。posx)(box〔j〕。posxbox〔i〕。posx)(box〔j〕。posybox〔i〕。posy)(box〔j〕。posybox〔i〕。posy)900){是雷if(box〔j〕。modmine1){周边雷数参数加一box〔i〕。nummine;}不是雷elseif(box〔j〕。modmine0){周边安全数参数加一box〔i〕。numpeace;}}}}}}}结束判断函数voidGary::checkover(){inti,k;k0;for(i0;i888;i){每有一个翻开且不是雷的点,则加一if(box〔i〕。modmine0box〔i〕。modlife1){k;}}全翻开则结束if(knumboxnummine){将所有未翻开雷做上标记for(i0;i888;i){if(box〔i〕。modmine1box〔i〕。modlife0){drawflag(i);}}胜利标志:笑脸setfillcolor(WHITE);setlinecolor(WHITE);fillrectangle(50,20,75,45);settextstyle(30,0,T(Wingdings));setbkmode(TRANSPARENT);settextcolor(BLACK);outtextxy(50,20,0x4A);setbkmode(OPAQUE);settextstyle(20,0,T(Consolas));结束变化exitgame1;boxm〔1〕。mod0;boxm〔2〕。mod0;boxm〔3〕。mod0;boxm〔6〕。mod0;boxm〔7〕。mod1;numflag0;绘制drawscene();}}格子绘制函数voidGary::drawbox(intnumbox){inti;intposx,posy;六边形绘制posxbox〔numbox〕。posx;posybox〔numbox〕。posy;POINTpts〔6〕;setlinestyle(PSSOLID,2);背景色setfillcolor(RGB(255,255,255));for(i0;i6;i){pts〔i〕。xlong(posx14。0cos(60。0double(i)pi180。0));pts〔i〕。ylong(posy14。0sin(60。0double(i)pi180。0));}solidpolygon(pts,6);灰边setlinecolor(RGB(85,85,85));line(pts〔0〕。x,pts〔0〕。y,pts〔1〕。x,pts〔1〕。y);line(pts〔5〕。x,pts〔5〕。y,pts〔0〕。x,pts〔0〕。y);line(pts〔1〕。x,pts〔1〕。y,pts〔2〕。x,pts〔2〕。y);前景色setfillcolor(RGB(170,170,170));for(i0;i6;i){pts〔i〕。xlong(posx12。0cos(60。0double(i)pi180。0));pts〔i〕。ylong(posy12。0sin(60。0double(i)pi180。0));}solidpolygon(pts,6);FlushBatchDraw();}初始化函数voidGary::initialization(){inti,j,k,t;随机初始化srand((unsigned)time(NULL));颜色初始化colortext〔0〕WHITE;colortext〔1〕RGB(170,170,170);按钮的初始化numbutton10;坐标for(i0;i10;i){boxm〔i〕。posx1410120(i2);boxm〔i〕。posy12575(i2);boxm〔i〕。posx2520120(i2);boxm〔i〕。posy27575(i2);}内容boxm〔0〕。textT(寻宝模式);boxm〔1〕。textT(生命值);boxm〔2〕。textT(地图边长);boxm〔3〕。textT(总地雷数);boxm〔4〕。textT(总地块数);boxm〔5〕。textT(已标记数);boxm〔6〕。textT(开始);boxm〔7〕。textT(重置);boxm〔8〕。textT(截图);boxm〔9〕。textT(退出);状态boxm〔0〕。mod1;boxm〔1〕。mod1;boxm〔2〕。mod1;boxm〔3〕。mod1;boxm〔4〕。mod1;boxm〔5〕。mod1;boxm〔6〕。mod1;boxm〔7〕。mod0;boxm〔8〕。mod0;boxm〔9〕。mod0;numbox3numsize(numsize1)1;numflag0;绘制参数初始化setlinecolor(BLACK);setlinestyle(PSSOLID,1);settextstyle(20,0,T(Consolas));第一次绘制drawscene();重置setfillcolor(WHITE);fillrectangle(0,0,400,400);平静脸setfillcolor(WHITE);setlinecolor(WHITE);fillrectangle(50,20,75,45);settextstyle(30,0,T(Wingdings));setbkmode(TRANSPARENT);settextcolor(BLACK);outtextxy(50,20,0x4B);setbkmode(OPAQUE);settextstyle(20,0,T(Consolas));格子初始化for(t0;t999;t){已翻开box〔t〕。modlife1;城墙box〔t〕。modmine2;坐标,点不到box〔t〕。posx200;box〔t〕。posy200;}初始化for(i0;inumsize;i){for(j0;jnumsize;j){for(k0;knumsize;k){特征值至少一个为零if(i0j0k0){编号ti100j10k;特征值box〔t〕。ii;box〔t〕。jj;box〔t〕。kk;未翻开box〔t〕。modlife0;不是雷box〔t〕。modmine0;未标记box〔t〕。modflag0;坐标box〔t〕。posx20022(jk);box〔t〕。posy20025i13(jk);周围雷数初始化box〔t〕。nummine0;box〔t〕。numpeace0;绘制地块drawbox(t);}}}}地雷生成函数create();}窗口主视角函数,获取用户操作voidGary::move(){鼠标定义ExMessagem;TCHARss〔15〕;inti,t;exitmove0;exitgame0;while(exitmove0){鼠标信息if(peekmessage(m,EMMOUSEEMKEY)){左键单击判断if(m。messageWMLBUTTONDOWN){判断是否点击了格子if(m。x0m。y0m。x400m。y400exitgame0){for(t0;t888;t){成功点击未标记的空格子if((m。xbox〔t〕。posx)(m。xbox〔t〕。posx)(m。ybox〔t〕。posy)(m。ybox〔t〕。posy)144box〔t〕。modlife0box〔t〕。modflag0){点击的格子不是雷if(box〔t〕。modmine0){绿色,安全,绘制settextcolor(LIGHTGREEN);drawnum(t,box〔t〕。numpeace);改为翻开box〔t〕。modlife1;}点击的格子雷elseif(box〔t〕。modmine1){扣除生命值numlife;黑色,危险,绘制settextcolor(BLACK);drawnum(t,box〔t〕。nummine);改为翻开box〔t〕。modlife1;生命值减为零if(numlife0){失败标志:哭脸setfillcolor(WHITE);setlinecolor(WHITE);fillrectangle(50,20,75,45);settextstyle(30,0,T(Wingdings));setbkmode(TRANSPARENT);settextcolor(BLACK);outtextxy(50,20,0x4C);setbkmode(OPAQUE);settextstyle(20,0,T(Consolas));失败exitgame1;boxm〔1〕。mod0;boxm〔2〕。mod0;boxm〔3〕。mod0;boxm〔6〕。mod0;boxm〔7〕。mod1;numflag0;}绘制drawscene();}成功结束判断checkover();break;}}}判断是否点击了可点击按钮for(i0;inumbutton;i){if(m。xboxm〔i〕。posx1m。yboxm〔i〕。posy1m。xboxm〔i〕。posx2m。yboxm〔i〕。posy2boxm〔i〕。mod0){break;}}点击矩形按钮switch(i){生命值:numlifecase1:{输入InputBox(ss,10,T(输入生命值(1999)));stscanfs(ss,T(d),i);if(i0i999){numlifei;}else{MessageBox(hOut,T(输入错误,不在范围内),T(来自小豆子的提醒),MBOK);}绘制drawscene();break;}地图边长:numsizecase2:{输入InputBox(ss,10,T(输入边长(28)));stscanfs(ss,T(d),i);if(i1i8){numsizei;numbox3numsize(numsize1)1;}else{MessageBox(hOut,T(输入错误,不在范围内),T(来自小豆子的提醒),MBOK);}绘制drawscene();break;}总地雷数:numminecase3:{InputBox(ss,10,T(输入地雷数(1总格子数)));stscanfs(ss,T(d),i);if(i0inumbox){numminei;}else{MessageBox(hOut,T(输入错误,不在范围内),T(来自小豆子的提醒),MBOK);}绘制drawscene();break;}开始case6:{numbox3numsize(numsize1)1;if(numminenumboxnumlife0){exitgame0;初始化initialization();}else{MessageBox(hOut,T(请将雷数修改为小于格子数或将生命值修改为大于零),T(来自小豆子的提醒),MBOK);}break;}重置case7:{结束游戏进程,进入准备阶段if(exitgame0){exitgame1;boxm〔1〕。mod0;boxm〔2〕。mod0;boxm〔3〕。mod0;boxm〔6〕。mod0;boxm〔7〕。mod1;numflag0;绘制drawscene();}break;}截图case8:{saveimage(T(image。png));break;}退出case9:{exitgame1;exitmove1;exitcarry1;break;}default:break;}}右键,且处于游戏进行状态elseif(m。messageWMRBUTTONDOWNexitgame0){for(t0;t888;t){成功点击空格子if((m。xbox〔t〕。posx)(m。xbox〔t〕。posx)(m。ybox〔t〕。posy)(m。ybox〔t〕。posy)144box〔t〕。modlife0){标记状态转换box〔t〕。modflag(box〔t〕。modflag0?1:0);绘制drawbox(t);画小旗子if(box〔t〕。modflag1){drawflag(t);numflag;}else{numflag;}绘制drawscene();}}}}}}主进程voidGary::carry(){窗口定义hOutinitgraph(651,401);SetWindowText(hOut,T(六边形扫雷:扫雷模式));参数初始化numsize5;nummine10;numlife3;背景绘制setbkcolor(WHITE);cleardevice();进程控制exitcarry0;while(exitcarry0){initialization();move();}closegraph();}主函数intmain(void){GaryG;G。carry();return0;}
  大家赶紧去动手试试吧!
  此外,我也给大家分享我收集的其他资源,从最零基础开始的教程到C语言C项目案例,帮助大家在学习C语言的道路上披荆斩棘!
  编程学习书籍分享:
  编程学习视频分享:
  整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!
  对于CC感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些CC的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

电力物联网行业发展概况及细分市场分析发展机遇挑战市场规模电力物联网行业发展概况及细分市场分析发展机遇挑战市场规模1电力物联网行业概况电力物联网是物联网在智能电网中的应用,是有效整合通信基础设施资源和电力基础设施资源,提高电力系统信息化水商品期货交易委员会主席表示虚拟货币法规可能会使比特币价格翻倍商品期货交易委员会主席罗斯坦贝南周四表示,如果比特币在受商品期货交易委员会监管的市场上交易,它的价格可能会翻倍。该主席补充说,虚拟货币行业只有在有监管结构的情况下才会出现机构流入的华为的冬天还要经历多久华为的掌门人任正非在2001年就曾发表过文章华为的冬天,当年的华为气势正盛,风头无两,何以心境能让当时的任正非发表这样的一篇文章呢,这就显示了一个领导人的魄力,胆识以及对市场的判断出海泰国,第三波红利期卷起千堆雪图片来源视觉中国文贸行四海,作者天巫Ted泰国新加坡,印度尼西亚,咖喱肉骨茶,印尼九层塔。无论是地理距离,还是心理距离,或者每每被提及的出海时光机理论,东南亚都很容易被筹备出海的中弯道超车!美国绕过5G突破6G,中国院士发出警示,华为失去机会?在第一次工业革命的时候,英国依托工业革命的改革,率先走上了工业化进程,从而造就了英国后来日不落帝国的地位。在第二次工业革命的时候,美国,德国,法国等国家依托第二次工业革命的改革,其一日连发4篇Nature,这个中国团队改写教科书!曾遭三轮毙稿9月28日晚11点,自然杂志在线发表了同一团队的4篇论文,29日早上又以封面文章形式同期发表。它们皆出自中国科学院院士中国科学院古脊椎动物与古人类研究所(以下简称古脊椎所)研究员朱宜宾动力电池中国制造新优势到2030年,全球每7辆新能源汽车中就有1辆装置宜宾造的动力电池。宜宾市相关负责人自豪地告诉中国证券报记者。作为全球规划产能最大的动力电池生产基地,宜宾乘着全球新能源汽车产业东风,中国女篮击败法国!5人被称赞,黄思静MVP,杨力维表示要为国献礼时隔28年,中国女篮击败法国女篮,重新进入世界杯四强!这场比赛我们赢了对方14分,两位数的分差,但是过程却让人惊心动魄,十分紧张。我们的上半场的发挥是相当不错的,尤其是第二节,完全中国当代徐霞客!他走过7大洲80余国,从打工人变成百万旅游博主这是走吧网推送的第260个与众不同的旅者故事本期嘉宾北石北石,环球旅行家,青年作家,北纬30度行者,跨界自媒体人,第八届中国当代徐霞客。北漂辞职后开始独自穿行北纬30度所在国家做环美国4000亿美元补贴,剑指新能源领域,对中国影响有多大?开头好家伙,美国总统拜登这是打牌打上瘾了,前脚刚签署芯片和科技法案,后脚又签署了通胀削减法案。其实这两者没有啥本质上的区别,都是通过巨额的真金白银进行补贴。前者是向半导体行业提供5中国再度增持美债,日本反而却在抛售美债,释放什么信号?作者李云飞来源原创一位久经商场的创业老司机,关注我,每天分享一点财富干货,让你的人生少走弯路。我们都知道,在今年上半年多国都在减持美债,包括欧盟国家。为什么要减债美债呢?那就是因为
网球王子官方最新人气top10公布头号有新人动漫网王2022年7月4日到8月14日,新网球王子开展了粉丝投票网王国势调查活动。这个调查活动是从网球王子系列中选出最喜欢的选手最支持的队伍最希望最支持的队伍与之对战的队广东省政协委员谢萌建议进一步优化消费券发放方式和使用今年广东省政府工作报告中提出,2023年将着力扩大国内需求。把恢复和扩大消费摆在优先位置,增强消费信心优化消费环境。通过加大餐饮文旅养老育幼等服务消费促进力度,加快培育新型消费。提报名系统信息填写模板来咯!广东省考正在报名中2023年广东公务员考试公告已发布!报名选岗正在进行中!!报名时间为2023年01月10日900至16日1600,笔试时间为2月,具体时间另行通知。01hr报名方式登录广东省公务员广东省政协委员杜兰AI养老,让老年生活更美好来源人民网广东频道原创稿人民网广州1月11日电(周睿)科技点亮生活,人工智能可以帮助老人拥有一个高质量老年。1月10日上午,在广东省政协十三届一次会议首场委员通道上,广东省政协委员广东与江西的区划变动,广东省的1个村,为何划入了江西省?在之前的文章中给大家说了很多省份的区划变迁沿革,每个省份的区划变迁沿革都是非常的复杂的,因为我国的历史非常悠久,5000年的历史文化传承让我国历经了不少的政权执政,在每个政权执政期吴越的美年过50的吴越越来越好看。岁月积淀的从容淡定写在脸上,眼睛里没有疲惫,眼神清澈。皮肤细腻,身材保持的恰到好处,身穿合体的V领礼服裙,尽显大气从容。岁月从不败美人。年过50的吴越越来国货眼霜再度开挂,眼部问题全垒打,鲨疯了!!!眼部是放大年龄的最佳部位,也是最容易衰老,难以护理的部位,要想藏住眼角的黑眼圈鱼尾纹异常艰难,如果要逆转眼部时光,眼霜一定要用起来。国货眼霜高口碑,效果佳的寥寥无几,要想研发出适合19。88万起售,造型时尚,拥有手机无线充电,Modernin新车型上市各位老司机们,大家好!请点击关注汽车行业情报站,第一时间了解最新的汽车资讯,在这里轻松读懂汽车!近日,情报君从相关渠道获悉,Modernin新车型上市,从家族中的定位来看,这两台车黑色鞋子果然还是名列前茅的前几个月做总结的时候还说,黑色的夏天鞋子偏少,最近似乎被打脸了捂脸因为最近看了许多黑色的凉鞋和单鞋,夏天都可以穿的。黑色给人感觉就是百搭耐看,它的特性就是这样,怎么可能会少呢?大概时尚单品这么多,明星为何偏爱梦金园?曾被杨丞琳吴谨言等一众大牌明星青睐的梦金园,在今年开春之际又掀起了一股新的时尚浪潮,品牌代言人江疏影佩戴热门款式登上了瑞丽服饰美容1月刊别册封面,在金饰的助力下更凸显江疏影妩媚又高今日欧美明星时尚街拍图集(2023年1月12日)今日欧美明星时尚街拍图集(2023年1月12日)时尚欧美明星的街拍就是行走在马路上的秀场,明星们的街拍就是时尚界的潮流风向标。明星们身穿什么牌子的衣服肩背什么大牌包包,脚蹬什么潮流
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网