- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                宿  迁  学  院
Windows程序设计
课程考核报告
班  级:             
学  号:         
姓  名:                 
得  分:                       
2013年12月 15  日
1.设计目的及要求	3
1.1设计目的及问题描述	3
1.2设计要求	3
1.3软件、硬件环境	3
2.课程设计步骤	4
3. 课程设计内容	15
3.1 概要设计	15
3.1.1 程序总体框架描述	15
3.1.2程序常用类声明	16
3.2主要技术	17
3.3系统设计结果 (界面截图、操作流程)	17
4.设计总结	19
4.1遇到的问题及如何解决	19
4.2体会	19
5.源代码	20
1.设计目的及要求 
1.1设计目的及问题描述 
利用VC++程序编写扫雷游戏,以检测自己一个学期对MFC学习的情况,以及了解自己在MFC学习中的不足,巩固和提高自己对MFC的理解和掌握。掌握C++编程和调试的基本技能,进一步提高自己的动手能力,和运用C++解决实际问题的能力。
本次我做的是一个简单的扫雷的游戏,包括计算雷数、时间和扫雷的规则制定。
1.2设计要求 
找出所有的非地雷的地方。如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(游戏结束),惟有将所有不含地雷的方块掀开,游戏才算成功。
游戏规则:
  首先按右键开始,可以通过界面快捷键(如图笑脸),也可以通过菜单重新开始。接着左键按下的数字周围一圈八格中雷的个数。当确定小方框里面是一个雷,则用右键按下有一个小旗出现。当发现此处不是一个雷时,就可以再次按下。结束时只需要按标题栏的关闭键或菜单中的文件下的退出。当踩到一个雷时,程序结束。
1.3软件、硬件环境 
  软件:Windows 7操作系统,Microsoft Visual C++6.0
  硬件:Inter(R) Core(TM) i3-2330M  CPU    @ 2.20GHz
2.课程设计步骤 
添加位图
    前十二幅是在雷区的,后四幅是按钮。
位图的ID号:
按扭位图:	30*30 	IDB_ANNIU1、IDB_ANNIU 2、IDB_ANNIU3、 IDB_ANNIU4
雷区位图:	14*14 	ID号按下图依次为:IDB_BITMAP14。。。。。。IDB_BITMAP25
(4)添加函数
	1)void CWkhView::leizero()//扫描,如果是已经被按下且雷数为0,显示它周围的八个格,并重
void CWkhView::leizero()
{
    for(int i=0;im_RowCount;i++)
		for(int j=0;jm_ColCount;j++)
			if(wkh[i][j].shumu==0wkh[i][j].weitu==1)
			{
				for(int n=i-1;ni+2;n++)
					for(int m=j-1;mj+2;m++)
						if(n=0n25m=0mm_ColCount)
							if(wkh[n][m].shumu!=-1wkh[n][m].weitu==0)
							{
							    wkh[n][m].weitu=1;
								CRect rect;
								rect.left=n*15+10;
								rect.right=n*15+25;
								rect.top=m*15+50;
								rect.bottom=m*15+65;
								InvalidateRect(rect);		
							}
			}
}
2)void CWkhView::OnLButtonDown(UINT nFlags, CPoint point) //鼠标左键按下函数
void CWkhView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	//获取指针pdc
     CDC *pDC=GetDC();
	 CDC Dc;
 	 if(Dc.CreateCompatibleDC(pDC)==FALSE)
 		  AfxMessageBox(Cant create DC);	
	 //显示按下按钮
	 if(point.x180point.x210point.y10point.y40)
	 {
    	Dc.SelectObject(m_anniu[3]);
    	pDC-BitBlt(180,10
                
原创力文档
                        

文档评论(0)