c--课程设计扫雷1-毕业论文.doc
《c--课程设计扫雷1-毕业论文.doc》由会员分享,可在线阅读,更多相关《c--课程设计扫雷1-毕业论文.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目: 扫雷 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹 2016 年 1 月 7 日一、 系统需求分析 随着世界经济的长足发展和计算机技术的日益成熟,计算机被应用到人类活动的各个领域,各种应用软件也相继问世,这其中有相当一部分是游戏软件。使用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用3D设计对系统配置的要求较高。 在众多游戏软件中,也不乏一些小游戏的身影,它们对系统的配置要求较低。能够满足人们对娱乐性的需求,是人们在完成工作娱乐时候的最好选择。在各种操作系统中都附带了一些小的游戏,而这些游戏
2、也成为电脑用户软件中不可或缺的一部分。 扫雷游戏是比较经典的一款小游戏,过去的几年里Windows操作系统历经数次换代,变得越来越庞大、复杂,但这个可爱的小游戏在任何版本的Windows操作系统里去却依然保持着原貌。但几乎每个电脑使用者都接触过它,并且深爱着这款小游戏。作为本系统的开发工具,Microsoft Visual C+ 6.0成为首选。它具有可视化的编程界面、详细的提示、以及完善的帮助文档,使得软件开发人员感到无比的亲切感。二、 总体设计2.1 设计思路 在设计之前,我们先来了解这款游戏的规则:在不打开任何藏有地雷的格子情况下,以最快的速度找出所有的地雷。如果在打开格子的过程中,不小
3、心翻开(踩到)藏有地雷的格子,则宣告失败(游戏结束),惟有将所有不含地雷的格子打开,游戏才算成功。游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的格子按下左键时即表示翻开格子,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则格子会以未标示标示疑似三者关系不断循环。游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个格子内所含的地雷数,假若翻开的格子显示数字“3”,则表示以其为中心的周边格子内藏有3个地雷。当按下的格子不是地雷,且周边八个格子也都没有地雷时,格子会以被翻开格子的八个方向将空白格子翻开。2.2模块功能介绍游戏总共七个类,其中以下四个类为主要。1、
4、 主界面对话框类:主要负责主菜单及各个窗口类对象的创建和调用等处理。2、 扫雷窗口类:主要负责接收玩家鼠标输入的打开格子位置、格子变换、花费时间及地雷格子的显示等处理。3、 帮组对话框类:主要负责帮助提示的显示及其它显示功能。4、 扫雷视图类:主要负责显示扫雷界面的展示。2.3模块结构图2.3.1游戏主界面设计扫雷游戏主界面的设计,如下图1所示 图1扫雷游戏主界面2.3.2游戏主菜单结构的设计图2 游戏主菜单结构三、 详细设计3.1游戏菜单的实现在扫雷游戏中,通过如下几个步骤即可实现添加游戏的菜单。 (1) 在扫雷游戏工程的资源中添加一个菜单资源 (2) 给每个菜单栏添加响应函数到CMainF
5、rame类中。 (3) 菜单响应函数的实现,代码如下,#if !defined(AFX_MAINFRM_H_91F247CA_D634_432A_AC01_35B33EA7D404_INCLUDED_)#define AFX_MAINFRM_H_91F247CA_D634_432A_AC01_35B33EA7D404_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000class CMainFrame : public CFrameWndprotected: / create from serialization onlyCM
6、ainFrame();DECLARE_DYNCREATE(CMainFrame)/ Attributespublic:/ Operationspublic:virtual BOOL PreCreateWindow(CREATESTRUCT& cs);public:virtual CMainFrame();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:DECLARE_MESSAGE_MAP();#endif 3.2游戏帮助对话框的实现扫
7、雷游戏中的帮助是使用一个对话框来实现的。其实现步骤如下。 (1) 添加一个对话框资源到工程中,并填写说明文字。(2) 编写一个CAboutDlg对话框类,主要是加载IDD_ABOUTBOX对话框资源。通过资源中的文字说明对游戏操作方法进行描述。同时只包含单击“确定”按钮的响应函数。(3) CAboutDlg对话框类的实现,需要实现对话框类的构造函数、析构函数和“确定”按钮响应函数,代码如下,class CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOU
8、TBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/ No message handlers/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDia
9、log(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ App command to ru
10、n the dialogvoid CMineSweeperApp:OnAppAbout()CAboutDlg aboutDlg;aboutDlg.DoModal();/ CMineSweeperApp message handlers3.3新游戏处理模块的设计与实现 新游戏处理模块主要负责游戏中的游戏初始化及开始游戏。其设计比较简单,只需要通过如下几步即可实现。 (1)载入图片资源和配置文件中的数据。 (2)把所有的游戏参数进行初始化。例如,当前消耗时间和状态等。 (3)初始化表示地雷区域的二维数组。 (4)让地雷区域图像失效,重新绘制新的图像。实现代码如下,BEGIN_MESSAGE_MAP
11、(CMineSweeperView, CView)/AFX_MSG_MAP(CMineSweeperView)ON_COMMAND(ID_EXIT, OnExit)ON_COMMAND(ID_START, OnStart)ON_COMMAND(ID_SETTING, OnSetting)ON_WM_LBUTTONDOWN()ON_WM_RBUTTONDOWN()ON_WM_TIMER()/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMineSweeperView construction/destructionCMineSweeperView:CMineSweeperView
12、()/ TODO: add construction code herem_row=10;m_col=10;m_mine=10;m_start=0;m_stop=0;m_t=0;CMineSweeperView:CMineSweeperView()BOOL CMineSweeperView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CMineS
13、weeperView drawingvoid CMineSweeperView:OnDraw(CDC* pDC)CMineSweeperDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herepDC-BitBlt(0,0,1024,822,&cbj,0,0,SRCCOPY);/ CMineSweeperView diagnostics#ifdef _DEBUGvoid CMineSweeperView:AssertValid() constCView:AssertValid()
14、;void CMineSweeperView:Dump(CDumpContext& dc) constCView:Dump(dc);CMineSweeperDoc* CMineSweeperView:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMineSweeperDoc);return (CMineSweeperDoc*)m_pDocument;#endif /_DEBUG/ CMineSweeperView message handlersvoid CMineSw
15、eeperView:OnInitialUpdate() CView:OnInitialUpdate();/ TODO: Add your specialized code here and/or call the base classAfxGetApp()-m_pMainWnd-SetWindowPos(NULL,300,50,460,500,NULL);initbitmap(); / 初始化位图void CMineSweeperView:OnStart() / TODO: Add your command handler code herem_start=1;m_stop=0;m_t=0;i
16、nitdata(); / 初始化数据paintmine(); / 画雷区SetTimer(0,1000,NULL);void CMineSweeperView:initdata()int i=0,j=0,n=0;mine=new Mine *m_row;for(i=0;im_row;i+)minei=new Mine m_col;for(i=0;im_row;i+)for(j=0;j=0&y-1=0)minex-1y-1.num+;if(x-1=0)minex-1y.num+;if(x-1=0&y+1=0)minexy-1.num+;if(y+1m_col)minexy+1.num+;if(x
17、+1=0)minex+1y-1.num+;if(x+1m_row)minex+1y.num+;if(x+1m_row&y+1=m_mine)break;void CMineSweeperView:paintmine()int i=0,j=0;CDC *pDC=GetDC();for(i=0;im_row;i+)for(j=0;jBitBlt(mineij.x,mineij.y,35,35,&cbj0,0,0,SRCCOPY);ReleaseDC(pDC);3.4地雷格子模块的设计与实现地雷格子的处理时扫雷游戏的核心内容,包括如下几个部分。1、 地雷铺设模块。 游戏中的地雷是随机铺设的,可以调用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 扫雷 毕业论文
限制150内