1 / 24
文档名称:

MFC小游戏-扫雷.doc

格式:doc   大小:32KB   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MFC小游戏-扫雷.doc

上传人:511709291 2019/9/11 文件大小:32 KB

下载得到文件列表

MFC小游戏-扫雷.doc

文档介绍

文档介绍:第二章扫雷游戏实现扫雷,是附带在Window里面的游戏,是个简单的游戏。因此我们就从扫雷开始我们的游戏旅程。很多人都玩过这个游戏,只是不知道怎么用程序实现。不过还有人不知道怎么玩,下面就先说说游戏的规则:● 开始:按左键开始游戏,按按钮或菜单重新开始。● 左键:按下时,是雷则结束,非雷则显示数字。● 数字:代表此数字周围一圈八格中雷的个数。● 右键:奇次按下表示雷,偶数按下表示对上次的否定。● 结束:左键按到雷结束,找出全部雷结束。接下来就该介绍游戏的编程过程了。不过要先交代一下一些内容。● 添加位图。● 添加全局变量。● 画初始界面。● 添加函数。为什么要按这种次序呢?因为我们在画初始界面时,可能要用到位图或变量,而变量的定义又可能要对位图进行定义。这样的步骤的好处还有:在做一步之后都可以运行,有错就改,无错就做下一步。上图是扫雷的一个画面。下面就一步一步地演示,以编程的思路进行,当然,由于编程过程中有一些函数中的代码是分成两三次写的,我们就不重复,全部代码在第一次讲到时列出,而后面讲到时就只是提一下。新建单文档工程2_1。:前十二幅是在雷区的,后四幅是按钮。为了便于加载,必须各自保证其连续性。另外,为什么不添加一个按钮而用位图呢?是因为即使我们添加了按钮也要添加四幅位图!位图的ID号:按扭位图: 30*30 IDB_ANNIU1、IDB_ANNIU2、IDB_ANNIU3、IDB_ANNIU4雷区位图: 14*14 ID号按下图依次为:IDB_BITMAP14。。。。。。:对于雷,我们是单独定义一个类,这样有利于程序的操作。classLei{public://显示哪一个位图 intweitu;//这个位置相应的值 intshumu;};视图类变量:接着是在View类添加变量和函数://剩下雷数intleftnum;//雷数 intleinum; //结束 intjieshu;//计时 shortsecond;//开始计时 intsecondstart;//位图数组 CBitmapm_Bitmap[12];//按扭位图数组 CBitmapm_anniu[4];//雷区行数 intm_RowCount;//雷区列数 intm_ColCount;//最大雷区 Leilei[50][50];//这个位置周围雷数为0 voidleizero();//计时器函数 afx_msgvoidOnTimer(UINTnIDEvent);//鼠标按下左键 afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);//鼠标按下右键 afx_msgvoidOnRButtonDown(UINTnFlags,CPointpoint);//初始化函数 afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);//鼠标左键松开 afx_msgvoidOnLButtonUp(UINTnFlags,CPointpoint);:开始执行程序,就能见到一个有状态栏和工具栏的大的单文档,与上图不同,所以我们第一步就是整理框架:打开下面函数,把里面的一些语句去掉。如下所示:intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){ if(CFrameWnd::OnCreate(lpCreateStruct)==-1) return-1; /* if(!(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP |CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)|| !(IDR_MAINFRAME)) { TRACE0("Failedtocreatetoolbar\n"); return-1;//failtocreate } if(!(this)|| !(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failedtocreatestatusbar\n"); return-1;//failtocreate } //TODO:Deletethesethreelinesifyoudon'twantthetoolbarto //bedockable (CBRS