用vc++设计与实现扫雷系统

用vc++设计与实现扫雷系统

ID:19815588

大小:63.00 KB

页数:6页

时间:2018-10-06

用vc++设计与实现扫雷系统_第1页
用vc++设计与实现扫雷系统_第2页
用vc++设计与实现扫雷系统_第3页
用vc++设计与实现扫雷系统_第4页
用vc++设计与实现扫雷系统_第5页
资源描述:

《用vc++设计与实现扫雷系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用VC++实现扫雷游戏程序学生姓名:尹一笑指导老师:颜宏文摘要:本课程设计实现类似于Windows操作系统自带的扫雷游戏。在课程设计中,系统开发平台为WindowsXP,程序设计语言采用VisualC++,程序运行平台为Windows2000/XP。在程序设计中,把整个雷区看成一个二维数组,把雷方块定义为具有所在雷区二维数组的行和列、当前状态、方块属性、历史状态的结构体,采用了结构化与面向对象两种解决问题的方法。整个游戏程序包括了布雷、扫雷过程和结果三个阶段,在处理鼠标响应事件中伴随着GDI绘图。程序通过调试运行,实现了设计目标,能够同时满足扫

2、雷游戏初学者和高手的需要。关键词:扫雷游戏程序设计VisualC++GDI绘图1概述扫雷游戏的游戏界面如图1.1所示。在这个界面中,由众多面积均等的小方块所组成的区域称之为雷区,雷区的大小由用户设置的游戏等级决定。未知区周围雷数提示玩家标定地雷图1.1游戏开始时,系统会在雷区的某些小方块中随机布下若干个地雷。安放好地雷的小方块称之为雷方块,其他的称之为非雷方块。部署完毕后,系统会在其他非雷方块中填充一些数字。某一个具体数字表示与其紧邻的8个方块中有多少雷方块。玩家可以根据这些信息去判断是否可以打开某些方块,并把认为是地雷的方块打上标识。当玩家将

3、所有地雷找出后,其余的非雷方块区域都已打开,此时游戏结束。在游戏过程中,一旦错误地打开了雷方块则立即失败,游戏结束;当玩家标识的地雷数超过程序设定,虽然打开了全部其余方块,游戏仍然不会结束。在游戏开始后,雷区上方有两个计数器。右边的计数器显示用户扫雷所花费的总时间,以秒为单位;左边的计数器显示当前还剩余多少个雷方块。2需求分析本课程设计实现类似于Windows操作系统自带的扫雷游戏。游戏需要提供一个菜单栏,上面有不同的相关选项,如游戏的开始、难度设置、退出等。按功能将游戏区域分成两个区域:雷区和提示区。提示区包括两个计数器和一个按键操作结果图像

4、提示。游戏过程中,当玩家用鼠标点击相应的方块,程序就会作出相应的鼠标响应事件,并伴随着GDI绘图,而众多鼠标事件的处理,都是围绕着实现扫雷程序的算法而衍生的。3总体设计3.1游戏框架的搭建3.1.1工程项目的创建利用应用程序向导创建一个名称为Mine的工程项目。由于不需要诸如工具栏、状态栏等功能,并且扫雷游戏的框架是不允许改变窗口大小的,所以在向导的第四步里面把所有的选项置空,然后点击“Advanced”按钮,在弹出的对话框中选中“WindowsStyles”选项卡,将“Maximizebox”项置空,其他均使用默认设置。3.1.2框架的改造通

5、过类向导添加一个继承于CFrameWnd的类,命名为CMineWnd,删除CMineDoc、CMineView和CAboutDlg类,将CMineWnd类代替CFrameWnd,让程序启动的时候以此窗口为主窗口予以显示。3.2菜单的制作参考Windows自带的扫雷游戏,创建出“游戏”和“帮助”菜单,然后通过菜单资源编辑器设定菜单的功能选项,包括难度级别的选择、颜色和音效是否开启、扫雷英雄榜、使用手册、关于软件的信息等。具体的菜单选项分别如图1.2。3.2.1难度级别的选择不同的难度级别有不同的雷区大小和不同的布雷数目,所以需要设置游戏的难度级别

6、。其宏定义如下所示,预定义了不同级别的横向方块数目、纵向方块数目和雷数。并将该宏定义放入新建的头文件“MineDefs.h”中。#definePRIMARY_XNUM9//初级x方向的方块区域数目#definePRIMARY_YNUM9//初级y方向的方块区域数目#definePRIMARY_MINENUM10//初级雷的数目#defineSECONDRY_XNUM16#defineSECONDRY_YNUM16#defineSECONDRY_MINENUM40#defineADVANCE_XNUM30#defineADVANCE_YNUM16

7、#defineADVANCE_MINENUM99窗口除了雷区外至少还包括蓝色窗口边缘Frame_wide、白色的视觉效果区line_wide、3D的外壳边框3D_line_wide、雷区mine_area_wide等。于是还需要定义关于位置的宏变量,如下所示。//窗口宽度相关定义#defineDEFAULT_FRAME_X6//窗口X方向宽#defineDEFAULT_FRAME_Y52//窗口Y方向宽#defineLINE_WIDTH_03//线边0的宽度#defineLINE_WIDTH_12//线边1的宽度#defineSIDE_WIDT

8、H_06//边0的宽度#defineSIDE_WIDTH_15//边1的宽度#defineSHELL_S_H37//小外壳的高度#defineSHEL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。