C--课程设计-俄罗斯方块游戏1.doc
《C--课程设计-俄罗斯方块游戏1.doc》由会员分享,可在线阅读,更多相关《C--课程设计-俄罗斯方块游戏1.doc(13页珍藏版)》请在咨信网上搜索。
1、课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目: 俄罗斯方块游戏 专 业:计算机科学与技术 姓 名: 学 号: 指导教师: 李晓虹 2015 年 12 月 25 日目录一、需求分析31.1系统概述31.2游戏特色31.3功能需求3二、总体设计42.1系统模块42.2系统业务处理流程5三、详细设计53.1砖块预显示53.2分数统计63.3砖块移动和游戏暂停的实现73.4播放背景音乐83.5游戏设置与帮助83.6背景位图的插入93.7砖块三维化103.8俄罗斯方块双人版的实现10四、测试与结果114.1整个游戏运行界面图114.2游戏设置与帮助页面图12五、总结13一、需求分析1
2、.1系统概述俄罗斯方块玩家通过键盘控制方块的形状样式和速度,组成相连的1行或1行以上方块会自动消除,方块消除到一定数量后会得到一定的分数,玩家可以升级,从而难度加大,也就是速度加快,玩家还可以通过消除一组方块,使得到的分数翻倍等到更多的分数,造成更强的分数效果。游戏中玩家可以和其他玩家1V1对战。1.2游戏特色俄罗斯方块是基于pc休闲平台上的单机对战休闲游戏,这就要求游戏本身不能过于庞大复杂,需要考虑到单机对战的灵活性和多变性。在游戏中通过对方块速度的变,能够使玩家不仅仅通过自己消除方块来获胜,还可以等到更多的分数,因此获得胜利。俄罗斯方块游戏在传统的俄罗斯方块当中加入了新鲜的游戏元素,例如可
3、爱的方块的颜色,绚目的消除方块特效显示,在游戏本身的简单耐玩的基础上,大大丰富了游戏的观赏性和趣味性,令玩家有了完全的游戏体验,充分享受游戏带来的乐趣。1.3功能需求(1)实现双人俄罗斯方块(2)隐藏菜单栏、工具栏、状态栏(3)实现难度可以选择(4)实现下一个砖块预测功能(5)实现总分统计功能,和每步消除所得分数显示(6)实现下、左、右、旋转、暂停功能(7)实现背景音乐播放功能(8)添加游戏帮助菜单(9)实现砖块三维化(10)实现双缓冲避免屏幕闪烁(11)设置窗口大小,禁用最大化按钮,禁止鼠标拖动改变窗口大小二、总体设计2.1系统模块图2-12.2系统业务处理流程图2-2三、详细设计3.1砖块
4、预显示砖块预显示的原理就是在第一次生成砖块的时候,一次生成2个砖块。然后将第2个砖块预显示,第1个砖块掉下来。接着将预显示的砖块掉下来,新随机生成的砖块预显示。这样的话,我们用flag1标记是不是第一次产生砖块3.2分数统计这里实现了,显示每次消除所得的分数和游戏总共所得的分数。由于,我们有一个返回消除了多少行的函数removeFullLines(),所以我们将这个返回值乘以积分规则里面的值,就实现了显示每次消除所得的分数。然后游戏总分就是累加每次得到的分数值。因为砖块最多就是消除4行,所以这里用个switch()语句来实现。m_num2是一个成员变量,保存的就是removeFullLines
5、()的返回值。3.3砖块移动和游戏暂停的实现这里原本是需要响应键盘按下事件的,所以需要添加WM_KEYDOWN消息响应。然后将函数传进来的nChar,也就是你按的键盘值,和你游戏中设定的移动按键比较。从而执行相应的操作。同时这里也要熟悉一下虚拟按键码。但是由于我们添加了位图按钮,导致键盘按键事件响应不了,我们这里就重载了PreTranslateMessage函数,在这个函数里面拦截按键消息,从而响应。一键下落:这里用了一个循环,直到下落到砖块与边界或者其他砖块产生冲突才停止下落。空格暂停:暂停的原理就是关闭定时器,KillTimer(1);/关闭定时器空格继续:SetTimer(0,diffi
6、culty,NULL);/继续 恢复原来的下落速度3.4播放背景音乐添加头文件:#include /播放音乐 。然后在工程-设置-链接-对象/库模块里面添加winmm.lib然后就将已经准备好的.wav格式的音乐引入VC中。这里可以自己先去下载.mp3格式的音乐,然后用格式工厂转换一下格式,我就是这么干的。3.5游戏设置与帮助这里就是调用了一个对话框,用来做一些解释说明。实现步骤: 插入一个对话框 给对话框关联一个类 在需要弹出对话框的函数里面定义一个对话框的对象,然后DoModal().弹出模态对话框。静态文本超链接颜色和鼠标样式:由于静态文本是不能响应鼠标点击事件的,所以我们要现将静态文本
7、的ID改掉,如:IDC_STATIC_BK然后在样式中将通知勾选上。这样就可以响应鼠标点击事件了。接着就是要实现鼠标移动到超链接上面显示一个手的形状,这里我们需要载入一个手型的光标。本来是载入这个:IDC_HAND就可以了,但是当我载入它的时候,编译,提示IDC_HAND未定义。查了一下原来是版本的问题,不支持手型的。后来谷歌上找到了一个可以载入手型的方法:m_hCursor = :LoadCursor(NULL, MAKEINTRESOURCE(32649);就是用一个全局的载入光标函数来载入。光标载入好之后,添加一个鼠标移动事件的响应,当鼠标移动到指定区域,显示手型光标。3.6背景位图的插
8、入这个就是界面美化神器了,就是因为这张背景整个游戏才变得比原来的美观了几倍。第一次做的单文档,白色背景,是在是太不友好了。这个背景图片是我从4399上面截图下来的,然后用ps制作了一下,使其符合我的要求。3.7砖块三维化这里用到函数Draw3dRect()实现砖块三维化,其中需要3个参数参数:1.矩形区域; 参数2:RGB() 参数3:RGB():其中后面两个参数,由下面这两个函数返回。具体代码如下:3.8俄罗斯方块双人版的实现其实实现双人版的很简单,就是将FillRect()填充区域右移一定距离就实现了双人版的。当然,是在你将第二个游戏的代码也编写好的前提下,不然只是把左边玩家的界面再显示一
9、次,那没得意思。同理,预显示也就是这么实现的,就是调整了一下砖块显示的位置。四、测试与结果4.1整个游戏运行界面图其中Next是预显示,Point是每次固定块后所得的分数,XO用于播放/暂停背景音乐,a,b,c用于选择游戏难度。START点击开始游戏。下面还有个总分统计栏。图4-14.2游戏设置与帮助页面图图4-2五、总结这次编写双人版俄罗斯方块,主要参照了VC+实验指导书,界面主要就是插入了一个位图背景,图是从4399上面截图下来的,然后ps成自己需要的大小并转化成.bmp格式。插入后,再就是在适当的地方显示砖块和分数统计,这样一个界面就做好了。界面上的按钮,我是用位图按钮CBitmapBu
10、tton实现的,这里有个小插曲,就是4张图片的大小问题,我本来的意思是想让鼠标点击的时候就显示一张小一点的图片,从而达到按钮的效果,所以我就做了4张大小不同的位图,导致了后来的白边的产生。另外,由于添加了位图按钮导致了按键事件WM_KEYDOWN和鼠标点击事件WM_LBUTTONDOWN不能响应,我也不知道是为什么。好在MFC中消息都要经过翻译后再发送,所以我就在PreTranslateMessage实现了按键和鼠标点击事件,开始不知道pMsg-pt传送进来的是相对于桌面的坐标。另外还有一个问题就是关于CRect的问题,如:我定义了一个CRect rect(10,10,100,100);然后我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 俄罗斯方块 游戏
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。