面向对象程序设计(C++)大作业

上传人:QQ15****706 文档编号:52454400 上传时间:2018-08-21 格式:DOC 页数:33 大小:325.50KB
返回 下载 相关 举报
面向对象程序设计(C++)大作业_第1页
第1页 / 共33页
面向对象程序设计(C++)大作业_第2页
第2页 / 共33页
面向对象程序设计(C++)大作业_第3页
第3页 / 共33页
面向对象程序设计(C++)大作业_第4页
第4页 / 共33页
面向对象程序设计(C++)大作业_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《面向对象程序设计(C++)大作业》由会员分享,可在线阅读,更多相关《面向对象程序设计(C++)大作业(33页珍藏版)》请在金锄头文库上搜索。

1、 面向对象程序设计(面向对象程序设计(C+C+)课程大作业)课程大作业设计题目:设计题目: 院院 系:系: 计算机科学与信息工程学院计算机科学与信息工程学院 专业班级:专业班级: 学号姓名:学号姓名: 指导教师:指导教师: 2015 年年 1 月月目目 录录一、一、 成员分工成员分工1 1二、需求分析二、需求分析 2 2三、总体设计三、总体设计 3 3四、详细设计四、详细设计 8 8五、系统测试五、系统测试 2424六、总结六、总结 3030七、参考文献七、参考文献 3131- - 1一一 成员分工成员分工我们小组成员共有三名,分别是,为了能按时圆满的完成这次 VC+课程设计,我们小组进行了详

2、细的分工,以确保设计能按时完成。经过周密的考虑和详细的调查最终确定该俄罗斯方块游戏需要以下几个功能模块:(1)需求分析(2)界面的设计(3)背景色的选择模块(4)游戏随机选择方块模块(5)游戏预览功能模块(6)收埋功能模块(7)记分功能模块(8)鼠标控制功能模块(9)模块联结(10) 系统测试经过小组成员的讨论,并根据个人的特长和具体爱好做如下具体分工:刘国松具体完成以下模块的设计与实现:(1 ) 需求分析(2 ) 界面的设计(3 ) 背景色的选择模块吕秀锦具体完成以下模块的设计与实现:(1)游戏随机选择方块模块(2)游戏预览功能模块(3)收埋功能模块(4)记分功能模块高婉婉主要具体完成以下模

3、块的设计与实现:(1)鼠标控制功能模块(2)模块联结(3)系统测试- - 2二二 需求分析需求分析1 1系统概述系统概述该游戏软件在 Windows 系统为玩家提供传统俄罗斯方块游戏的基本功能,玩家可以通过键盘控制在游戏区中堆积软件随机提供的由四个小方块不同组合的 7 种类型不同颜色的方块,每个小方格的颜色也是随机的,并且在整个下落的过程中,其颜色也呈动态变化。游戏过程中,每在游戏区堆满一行后,自动消除并记分。同时消去的行数越多,那一次性所加的分数也就越多。一行是 100,两行是300,三行是 600,四行是 1000 分。为了得到更多的分,那么我们游戏者就要想办法一次尽可能多的消去方块。当游

4、戏区不能再堆积新来的方块时,游戏结束。游戏设定 3 个级别,初级,中级和高级,级别越高,方块下降的速度越快、难度越大,玩家可以根据自己的需要自由设定初始游戏级别,达到最高级别时不再增加。游戏以最终玩家获得的分数来判断玩家水平的高低。游戏为对战型俄罗斯方块,玩家依靠自己消层和使用道具来打击对手。当玩家游戏池中的砖块累积到顶端时游戏失败。2 2系统运行环境系统运行环境(1)硬件环境。本系统适用于那种 Inter386 以上计算机,内存容量为 128M,应配备,键盘,鼠标,显示器等外部设备。(2)软件环境。本系统的设计采用 Visual C+6.0 编写。在 Windows XP SP2 环境下测试

5、通过(3)本游戏软件在 Windows 平台下都可以运行。3 3功能需求描述功能需求描述这是一次尝试,一个比较成功的设计,其精彩的算法与漂亮的程序结构足以让人兴奋了。这个游戏,不仅可以满足游戏爱好者对游戏的要求,同时我们增加了美观因素,让游戏有一个比较美观的界面,满足我们游戏爱好者的视觉要求。这有别于常规的俄罗斯方块算法,游戏中,玩家依靠自己消层来得分。当玩家游戏池中的砖块累积到顶端时游戏失败。- - 3三三 总体设计总体设计1 1屏幕的组成屏幕的组成一个游戏一定要有一个界面供游戏者对游戏控制。这个界面中要包含让游戏者更加清楚游戏状态的信息,比如,一个方块在下落过程中,它的位置如何,形状是怎么

6、样的,要如何放置这个方块,以及下一个方块是什么形状,这样关系着游戏者要如何放置方块,让整体有个更加的布局,有利于游戏的进行。屏幕由 20 行 13 列的网格组成;其中 02行:初始的形状将在这里形成然后下落,这三行用户不可见;319 区域;20,其标记已到屏幕底部。在界面的右边就是相关的游戏信息,级别控制,开始游戏控制,背景色的选择,当前方块的坐标,组型,颜色及类型(ZZ 表示)以及目前的得分情况,下一个预览方块,鼠标控制信息(变形,左移,右移和加速下落) ,收埋信息(分别向上,下,左和右收埋,及结束游戏收埋,这时将显示版权信息) 。2 2形状的组成形状的组成每一种形状都是由四个方块组成,比如

7、由四个方块横向排列而成3 3形状的统一形状的统一等共 19 种形状(旋转前后的形状归为不同的形状) ,虽然在玩游戏时我们会去将各种不同的形状有个不同的命名(比如“条子” , “方块”等) ,但在设计游戏是它们却是统一的,它们都是“形状” 。这一点是游戏成功的基础。为了使各种不同的形状达到统一的设计,我设计了如下解决方案:将形状始终放在 44 的格子中,以该 44 格子的第一个格子为“基础点” ,只要给出组成形状的四个块相对于该基础点的相对坐标。 为基础点,形状各块的相对坐标是相对于这个基础点的那么在其中就如图:其四个方块相对于基础点的网格坐标就为(0,2) (1,2) (2,2) (3,2)

8、02122232 - - 4我们将用一个 int8记录下这四个相对坐标值同理: 02120313这样,我们只要知道某个形状的相对坐标值数组,就可以轻松地求出它的各方块的排列方式,也就是其形状(样子) 。4 4移动与旋转的统一移动与旋转的统一从上面我们可以看出形状的移动可以这样来实现: 移动基础点的网格坐标,然后组成形状的四个方块按照其与基础点坐标的相对值而改变网格坐标,则表现为移动。旋转与移动的原理一样:设旋转前的形状为 ZZ = 0,旋转后的形状为 ZZ=1,组成形状 A 的四个方块按照 B(而不是按照 A)的相对于基础点坐标的相对值而改变网格坐标,则表现为旋转。比如, 02122232 移

9、动: 设其基础点网格坐标为(gX,gY),其各方块当前坐标(gX+0,gY+2), (gX+1,gY+2), (gX+3,gY+2), (gX+3,gY+2) 。如果其向左移动一格,那么它的基础了坐标 gX-=1; gY=gY; 其各方块移动后坐标 (gX+0,gY+2), (gX+1,gY+2), (gX+3,gY+2), (gX+3,gY+2) 。旋转:设其基础点网格坐标为(gX,gY),其各方块当前坐标(gX+0,gY+2), (gX+1,gY+2), (gX+3,gY+2), (gX+3,gY+2) 。如果其旋转一次,旋转后的形状如图 10111213那么其旋转后的各方块坐标 (gX+

10、1,gY+0), (gX+1,gY+1), (gX+1,gY+2), (gX+1,gY+3)如果我们将各形状编号,比如编号 0,其旋转 90 度以后的形状为编号 1那么 0 旋转目标为 1,1 的旋转目标为 0所以所有形状便得到了统一,如图形状- - 5- - 6 - - 7 - - 8四四 详细设计详细设计1程序流程图程序流程图(1)数据流图)数据流图数据流图是对系统数据流向的一种描述,并从本质上让程序的使用者,大致了解系统的使用方法。本俄罗斯游戏的大致流程图如下(2)系统功能模块)系统功能模块- - 9(3) 系统流程图系统流程图系统流程图是对系统的大致流程进行描述,本游戏的系统流程图如下

11、:2 2 程序模块详细设计程序模块详细设计根据上面所介绍的本系统的各个模块及其需要实现的功能,下面详细设计如下:(1 1)界面的设计)界面的设计程序界面程序在启动运行时,系统会通过调用视图类中的重绘图函数对界面进行界面的初始化。使程序界面更加友好,在使用上给用户一种清新怡然的感觉。其界面如图所示:- - 10(2 2)背景色的选择模块)背景色的选择模块实现此功能代码如下:void CGameDlg:OnBackcolor()/背景色CColorDialog dlg(BackColor);/if(dlg.DoModal()=IDOK)BackColor=dlg.GetColor();Back=1

12、;- - 11(3 3)游戏随机选择方块模块)游戏随机选择方块模块在游戏中,每一个下落的方块都是随机的,包括颜色,形状。实现此功能相关代码如下:void CGameDlg:Shape()/外部框架int line=18;int rr=4; CDC *pDC=GetDC();ASSERT(pDC!=NULL);CPen pen;pen.CreatePen (PS_SOLID,1,RGB(0,0,0);CBrush brush1,brush2,brush3;brush1.CreateSolidBrush(RGB(60,60,60);brush3.CreateSolidBrush(RGB(0,170

13、,0);brush2.CreateSolidBrush(BackColor);pDC-SelectObject (pen);pDC-SelectObject (brush1);pDC-Rectangle(X-line,Y-line,X+M*r+line,Y+N*r+line);int b=line*2/3,c=b-rr; pDC-SelectObject (brush3);pDC-Rectangle(X-b,Y-b,X+M*r+b,Y+N*r+b);pDC-SelectObject (brush1);pDC-Rectangle(X-c,Y-c,X+M*r+c,Y+N*r+c);pDC-SelectObject (brush2);pDC-Rectangle(X-2,Y-2,X+M*r+2,Y+N*r+2);DeleteObject(pen);DeleteObject(brush1);DeleteObject(brush2);DeleteObject(brush3);ReleaseDC(pDC);- - 12void CGameDlg:one(int Type, int i, int j) /某元格颜色 位置if(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 论文指导/设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号