(MFC自制扫雷游戏心得.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(MFC自制扫雷游戏心得

首先亮一下自己做出的扫雷游戏界面效果: 还没来得急改exe文件的图标,刚下好ico文件,不过没有合适的,所以就还没换。 我做这个扫雷游戏的第一件事当然是想解决怎么让这个界面看起来像扫雷那个样子。我首先想到了按钮控件可以响应鼠标点击事件,所以就决定了使用MFC的对话框,用紧密排列的按钮来当做雷区,索性就拉了几个按钮在界面随意放着,然后Ctrl+c和Ctrl+v的凑够100个按钮。这样一阵随意操作之后,我急后悔了!太乱了,密密麻麻地,再怎么也要弄个10*10的方阵出来才像样嘛~所以干脆把按钮全Delete掉,规规矩矩地先放5个按钮进来,把按钮的文字都删掉,然后调整按钮大小成一个方形,将5个按钮选定布局一横排,之后再复制这5个到后面紧挨着放好,这样才弄好第一行雷区,接下来就10个10个的复制,对齐了。我想要是这个布局有网格的就好了,就不用我这样一排一排的弄了…… 第二步就是做上图右边那一列的游戏信息,简单的就不用赘述了。 第三步嘛自然是在雷区安排雷的位置了。这就需要为这100个按钮安排序号以作区别,然后随机数序号的按钮下对应着一个雷。而我又打开该对话框的资源文件头文件Resource.h发现关于这100个按钮的ID设置是这样的: #define IDC_BUTTON1 1000 #define IDC_BUTTON2 1001 #define IDC_BUTTON3 1002 …………………………………………………… …………………………………………………… #define IDC_BUTTON98 1097 #define IDC_BUTTON99 1098 #define IDC_BUTTON100 1099 所以我就干脆以1000-1099为序号,当然雷的标记是定义一个整数数组flg[100],flg[index]=0则不是雷,flg[index]=1则是雷,其中index+1000对应按钮的ID。 第四步了,需要为这100个按钮添加响应鼠标左键单击事件和右键单击事件,不想做得太复杂了,就没做鼠标左键双击和鼠标左右键同时点击的响应。当然只算鼠标左键和右键就已经是麻烦事了,比较要为100个按钮添加呢!百度了一下多个控件响应同一个事件的添加方法,其中左键单击有比较详细的方法说明,就是先添加一个按钮的左键单击事件,再改Mine_SweepDlg.cpp如下几句代码: BEGIN_MESSAGE_MAP(CChusDlg, CDialog) //{{AFX_MSG_MAP(CChusDlg) ………… ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() 将其中的 ON_BN_CLICKED(IDC_BUTTON1, OnButton1) 改为 ON_CONTROL_RANGE(BN_CLICKED,IDC_BUTTON1,IDC_BUTTON100,OnButton1) 即可实现100个按钮响应同一个鼠标左键单击事件函数OnButton1() 这只适用于ID连续的控件。 当然鼠标左键单击事件函数需要知道是哪一个ID的控件发生的,所以还需要传递一个ID参数,做下面几个位置的修改: Mine_SweepDlg.h中afx_msg void OnButton1(UINT uID);加入括号的参数,再在Mine_SweepDlg.cpp的事件响应函数中加入参数void CMine_SweepDlg::OnButton1(UINT uID)其中的uID就是100个按钮的序号,而uID-1000就得到雷区标识的index了。 然后我将响应事件作出的效果如图: 即点击某一个方格,判断周边8个方格是否有雷标识,若没有则隐藏该按钮,若有则显示周边雷标识个数。若点击的这个方格就是累标识,则弹出消息框提示游戏结束。以下附上事件响应函数的代码: void CMine_SweepDlg::OnButton1(UINT uID) { // TODO: Add your control notification handler code here int index=(int)uID-1000; int chack[9]; int i,j; if(flg[index]==0)//如果该位置不是雷 { chack_mine(index,chack);//获取试探方向 fo

文档评论(0)

yyf7373 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档