csdn10年中间经典帖子

源代码在线查看: csdn_文档中心_用vc++编写扫雷游戏.htm

软件大小: 5861 K
上传用户: chengshengwu123
关键词: csdn 10
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				
				CSDN_文档中心_用VC++编写扫雷游戏
				
								href="CSDN_文档中心_用VC++编写扫雷游戏.files/csdn.css" rel=stylesheet>
				
				
				.title0 {
					COLOR: #ffffff; FONT-FAMILY: arial; FONT-SIZE: 17px; FONT-WEIGHT: bold; TEXT-DECORATION: none
				}
				A.title2:link {
					COLOR: #000000; TEXT-DECORATION: none
				}
				A.title2:visited {
					COLOR: #000000; TEXT-DECORATION: none
				}
				A.title2:active {
					COLOR: #ff0000; TEXT-DECORATION: none
				}
				A.title2:hover {
					COLOR: #ff0000; TEXT-DECORATION: none
				}
				
				
				
								function submitlog(sign)
				{
					var types=document.alogon.type.options[document.alogon.type.selectedIndex].value;				
					if (document.alogon.name.value!="" && document.alogon.pass.value!="")
					{
						if (types!="1")
							document.alogon.action="http://www.csdn.net/member/logon.asp";
						else
							document.alogon.action="http://expert.csdn.net/member/logon.asp";
						if(sign)
							document.alogon.submit();
						//return true;
					}
					else
					{
						if (document.alogon.name.value=="")
							alert("请输入用户名!");
						if (document.alogon.pass.value=="")
							alert("请输入密码");
						return false;
					}
					return true;
				}
				function GetMyPass()
				{
					if (document.alogon.name.value!="")
					{
						document.alogon.action="http://www.csdn.net/member/getpass.asp";
						document.alogon.submit();
					}
					else
					{
						alert("请在姓名输入框里输入用户名或注册EMAIL!");
					}	
				}
				// -->
				
				
				
				  
				  
				    
				       				      href="http://www.csdn.net/member/login.asp">登 
				      录..    				      target=_blank>[注 册]    				      href="http://www.csdn.net/member/login.asp">				      color=#ffff33>忘记密码    				      href="http://www.csdn.net/member/logonout.asp">				      color=#ffff33>注销登录 
				    				      src="CSDN_文档中心_用VC++编写扫雷游戏.files/top_1.gif" width=20>
				    
				    				      color=#ffffff> 				      class=FormText_1 name=type> 新闻标题 
				        软件名称 商品名称 				        value=4>文档标题 职位名称   
				    
				
				  
				  
				    				      src="CSDN_文档中心_用VC++编写扫雷游戏.files/csdn.gif" width=120>
				    
				      
					var rand = Math.random().toString(); 
					var ordval = parseInt(rand.substring(2,4)); 
					function Showad(width)
					{
						if(width=='468')
						{
								document.write("  ");
								return;
						}
						if(width=='120')
						{
								document.write("");
								return;
						}
						return;
					}
				Showad('468')
				    
				    
				      Showad('120')
				    
				
				  
				  
				    
				  
				    				      class=title0>csdn.net
				    
				      
				    
				  
				    				  width=770>
				
				  
				  
				    
				    
				      				      scrollDelay=80>
				      
				      
				    
				      document.write("");
				      
				      
														document.ns = navigator.appName == "Netscape"
							tmpDate = new Date();
							date = tmpDate.getDate();
							month= tmpDate.getMonth() + 1 ; 
							if(document.ns)
							{
								year1=tmpDate.getYear()
								year= year1.toString().substr(1,2);
							}
							else
								year= tmpDate.getYear();
							
							document.write(year);
							document.write(".");
							document.write(month);
							document.write(".");
							document.write(date);
							// -->
							
				        
				  
				    
				
				  
				  
				    
				      
				    
				    
				      
				        
				        
				          
				          CSDN - 				            href="http://www.csdn.net/develop/">文档中心 - 				            color=#003399>Visual C++     
				        
				          
				          
				        
				          				            color=#ffffff>标题
				              用VC++编写扫雷游戏    ghj1976(转贴) 
				          
				        
				          
				          
				        
				          关键字
				              用VC++编写扫雷游戏
				        
				          
				          
				        
				          				            color=#ffffff>出处
				              				            href="http://www.vckbase.com/article/gdi/1.htm">http://www.vckbase.com/article/gdi/1.htm
				        
				          
				          
				      
				        
				        
				          
				            				            lang=ZH-CN size=3>
				            
				            华中师范大学信息技术系研98(430079) 王洪亚
				            本文从分析Windows扫雷游戏的功能特点开始,应用面向对象的可视化编程语言Visual 
				            C++给出了个功能模块的具体实现方法,并提供了编写小游戏程序的一般方法和Visual C++的一些使用技巧。
				            首先分析扫雷的最基本功能。
				            				            align=justify>点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示,这其实是一个递归过程。
				            				            align=justify>点击鼠标右键于未知区域,则将其置为有雷而不管是否真的有雷。可选择初、中、高三级并可自定义雷数和区域大小。
				            雷区上部左侧显示总雷数减被标明有雷区域的数目。
				            雷区上部中间位置显示一按钮用于开局和显示鼠标动作的结果。
				            雷区上部右侧显示扫雷的时间。
				            将雷全部扫清后,则显示一对话框将你的姓名记入排行榜。以时间排序。
				            为完成上述功能,应用Visual C++的具体技术细节如下:
				            1. 
				            应用AppWizard创建基于SDI的应用程序CBombApp,去除打印和状态条支持,在资源编辑器中修改菜单和相应的加速键,使其与Windows扫雷游戏一致。具体为开局(ID-GAME-BEGIN)、初级(ID-GAME-JUNIOR)、中级(ID-GAME-MIDDLE)、高级(ID-GAME-SENIOR)、自定义(ID-GAME-CUSTOM)、颜色(ID-GAME-COLOR)、英雄榜(ID-GAME-SORT)、退出(ID-GAME-EXIT)、帮助(ID-HELP)。
				            2. 
				            在资源编辑器中对应于雷区的每个小区域的13个属性。用画笔或其他绘图工具绘制出相对应的13个10乘10的16色小位图,三个对应于小人表情的20乘20的16色小位图,供更换颜色时使用的一套与前16个对应的单色位图,显示时间和雷数的0~9十个数字位图(底色为黑色)。
				            				            align=justify>定制CUSTOMER对话框,内含三个静态文本控件和三个编辑控件,三个编辑控件分别对应成员m_iRowNum,m_iColumnNum,m_iBombNum。该对话框用于定制雷数,行列数,其相应的MFC类为CCustomer。定制SORT对话框,内含九个静态文本控件,其中六个显示排行榜的姓名和时间,其对应的MFC类为CSort。定制INPUT对话框,内含一个静态文本控件和一个编辑控件,编辑控件用于在游戏成功结束时输入姓名,其对应的MFC类为CInput。
				            3. 定义类Bomb,封装每颗雷的相关属性。
				            Class Bomb
				            {
				            public:
				            int isbomb;//决定初始时是否是雷
				            bool issel; //判断区域是否被处理过且周围有雷
				            bool isdone;//判断递归时是否被处理过
				            int num; //周围雷数
				            bool findbomb; //排雷者认为是雷时置一(但是不一定真是雷)
				            } ;
				            4. 
				            重载CMainFrame中PreCreateWindow,并设置相应属性,使其窗体大小固定,这样就固定了显示区域的大小为初始10乘10个雷和外加雷区上部的控制区域,部分代码如下。
				            cs.style=WS_OVERLAPPED|WS_SYSMENU| 
				            WS_BORDER|WS_MINIMIZEBOX;
				            cs.cy = 10*15+6;
				            cs.cx = 10*15+60; 
				            //6和60分别是横纵的附加值,用于边框、菜单、标题条、控制区域。
				            5. 
				            游戏的主要工作就是呈现不断变换的图形或动画,并按用户的输入交互进行显示,而Windows文档-----视窗构架中的视窗的功能正是接受用户输入并负责显示,因此由CView类来完成扫雷的大部分工作。在CBombView中定义下列成员变量记录相关操作的结果或对象的状态。
				            Bomb m_bomb[30][30]; //最大的地雷区域
				            CString m_CurrentTime; //用于记录并显示扫雷时间
				            CTime m_BeginTime;//记录游戏开始时的时间
				            BOOL m_TimerBegin;//定时器是否开启
				            int m_iBomNum;//雷的数目
				            int m_iRow;//雷的行数
				            int 
				  m_iColumn;//雷的列数
							

相关资源