资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
第9页 / 共27页
第10页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
word四 川理工学院课 程 设 计 书学院计算机学院专业计算机科学与技术班级计科2014级题目俄罗斯方块教师何绍荣王非学生雷元刚X柯摘要近年来随着计算机在社会领域的不断开展,C+作为一门高级语言,能够实现面向对象编程。作为相较于C语言而言,C+设计无需复杂的程序设计环境,并且兼容C语言且比C语言更加安全和简洁。俄罗斯方块是大多数人儿时的游戏,它通过移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。本课程设计完成了俄罗斯方块的下落,旋转,加速,预览下一个方块。以与音乐的播放和帮助文档的创建,分数的读取和记录。通过编写本程序,让作者对消息循环和窗口的创建有了深入的理解,并且理解了俄罗斯方块的运行原理。同时掌握书写程序设计开发文档的能力。关键词:窗口句柄;回调函数;位图方块;俄罗斯方块;目录前言11.1 需求分析21.2 系统功能与结构简介21.2.2 系统结构2第二章详细设计3界面设计32.1.1 UI界面设计32.2 格模块功能设计4各按钮功能的实现4游戏区域模块6控制区域模块6系统流程图6具体函数设计7小结8第三章测试计划9测试方案9测试项目与功能9测试人员与目的93.4 测试结果9第四章致谢13参考文献14附录A15 / 前言俄罗斯方块游戏由莫斯科科学学院程序员Alexei Pajitnov设计,发行于1985年。他在玩过一个拼图游戏之后受到启发,从而制作了一个以Electronica 60为平台的俄罗斯方块的游戏。后来经瓦丁格拉西莫夫移植到PC上,并且在莫斯科的电脑界传播。帕基特诺夫因此开始小有名气。随后几年,俄罗斯方块开始登陆各大游戏主机。也曾因为问题引起过许多纠纷。但是拜亚洲盗版商人所赐,俄罗斯方块被引进到国内,如今已成为家喻户晓的著名游戏了。如今电子游戏业如此繁荣,作为电子游戏鼻祖的俄罗斯方块起到了决定性的作用。如今俄罗斯方块已有多种版本,有的加了几种特殊形状,有的可以使用道具,还有连机的俄罗斯方块等等。但万变不离其宗,不管怎么变,游戏的根本规如此是没有变化的。游戏玩法十分简单,如今已经成为一种公认的规如此:屏幕顶部以随机顺序落下形状各异的方块,你要试图用它们拼成没有空隙的行列。坚持得时间越长,游戏速度也就变得越来越快,而游戏的吸引力就在于使你顶住碎块的进攻,支撑的时间比上一次更长。由于玩法简单,容易上手,如今仍是风靡全球,老少皆宜的一款游戏第一章 设计简介与设计方案论述1.1 需求分析随着社会的开展,越来越多的人开始接触电脑,也有越来越多的人开始喜欢上玩电脑游戏,而俄罗斯方块是一款经典的游戏,对于广阔人群都有吸引力,游戏可以让人们得到放松,提高人们的工作效率。而好的人机交互界面,也能给人以美好的感官享受。1.2 系统功能与结构简介此俄罗斯方块程序能够实现显示现一个方块的形状,以与显示当前用户的得分和等级并写入到文件中,能够暂停,重玩,退出,帮助文件,切换音乐,关闭音乐。在游戏的过程中,如果想要暂停,可以点击菜单栏上的游戏里的暂停,或者点击空格键暂停。再次点击空格键游戏继续。如果要切换音乐,可以点击设置里的音乐选项,单击2中不同风格的音乐。1.2.2 系统结构利用的是MFC对话框程序的构成框架,然后再利用Windows提供的资源,运用控件,自己制作了对话框和人机交互界面。如图2.1所示。图2.1 程序结构图第二章 详细设计界面设计UI界面设计打开VC C+6.0新建一个工程,选择对话框。便生成了一个窗口。然后打开ResouceView,点开Dialog,插入Dialog,利用控件,绘制各个按钮。如图2.1所示。图2.1 俄罗斯方块首先设计游戏的UI界面,先创建工具栏第二行添加位图资源的ID,以与按钮的个数,大小,宽度,高度,工具栏风格。添加tbButtons数组,IDM_NEW新游戏,IDM_PAUSE暂停,IDM_STOP停止,IDM_MUSIC音乐,IDM_HELP帮助,并添加竖直的分割直线。然后为控件添加响应函数发出单机消息。编写窗口消息循环和窗口回调函数,并且用Case用来捕获消息并处理。 格模块功能设计各按钮功能的实现1处理暂停按钮单击暂停按钮后,在message被捕获后传如回调函数后,判断是否是消息,再将其转化为int类型,并再使用case语句捕获然后调用GamePause函数来处理。如果游戏完毕就直接返回,如果游戏上一个状态是开始,那么就显示游戏暂停,并调用SendMessage()显示游戏暂停,调用KillTimer()让方块停止下落,调用TetrisMusic()停止播放音乐。最后将状态设置为取反。如下列图。图2.2 程序暂停图2处理停止按钮单击停止按钮后,窗口捕获后,调用回调函数匹配IDM_STOP,如果y=-1,还没有开始游戏,就直接返回。否如此就调用GameOver(),输出游戏完毕。如图2.3所示。3处理开始按钮单击开始按钮后,通过message捕获后,执行GameStart函数,开始初始化游戏的数据,初始化Matrix矩阵,并将其初始化的颜色的值赋值为-1。初始化方块的位置为X=4,Y=-1。初始化标志变量,bStart和bGover都设置为FALSE。初始化游戏区,初始化计分器,等级设置为1级,慢行,分数都设置为0,最高分从文件中读取。4处理退出按钮单击退出按钮后,通过message捕获后,执行SendMessage()后销毁窗口。窗口也就随着被系统销毁了。5处理帮助按钮当点击帮助这个按钮的时候,通过消息循环,捕获到的消息传递给回调函数进展处理,在成功的与IDM_HELP匹配后,调用DialogBox()弹出一个消息框,这个消息框是我们实现建立好的,如下列图。只需要通过函数来调用它就可以了。上面会有一些关于游戏的规如此和游戏方式的说明等。如图2.4所示。图2.3 游戏完毕图图2.4 帮助界面图2.5 帮助消息框游戏区域模块图2.6 游戏区结构图控制区域模块图2.7 控制模块结构图系统流程图是否到顶部是否到顶部是否到顶部是否到顶部具体函数设计LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);窗口回调函数,在窗口运行过程中处理控件产生的消息以与键盘按下的消息,采用消息循环机制void SetNormalText(HWND,BOOL);字体设置函数,处理窗口显示的字体格式,美化界面void GameUI(HWND);窗口控件的布局,以与控件的布局,图形化界面的主要实现函数void DrawButton(LPARAM);绘制游戏区域的四个方向按键void DrawTetris(HDC,int,int,int);绘制要显示出来的方块,方块显示的主函数void DrawNext(HDC);绘制预览区,显示下一个方块的主要函数void DrawMatrix(HDC);绘制游戏区域的实现函数,实现游戏区域的绘制,使方块在游戏区域中显示,游戏运行的主要区域void RandomBlock(int *,int *,int *);随机产生方块的主要函数,能够随机的产生方块BOOL CheckBlock(int,int);检查越界函数,在方块下落和旋转过程中判断是否可以执行void DropTetris(HWND);方块下落函数,定时器产生消息后调用此函数,使方块能够实现下落功能void RankTetris(HWND);方块旋转实现函数,在下落过程中方块可以旋转成四种形状中的任意一种,实现变形功能void GameStart(HWND);游戏开始时调用,实现游戏初始化功能void GamePause(HWND);游戏暂停时调用,实现游戏的暂停功能void GameOver(HWND);游戏完毕时调用,实现游戏的扫尾工作int TetrisIni(int);加载配置文件,从配置文件中读取数据。例如:最高分BOOL CALLBACK HelpDlgProc(HWND,UINT,WPARAM,LPARAM);帮助对话框的回调函数,实现对游戏操作者的帮助功能BOOL CALLBACK MusicDlgProc(HWND,UINT,WPARAM,LPARAM);音乐设置对话框的回调函数,实现对音乐选择的功能void TetrisMusic(BOOL);音乐对话框调用此函数void MusicItem(int);音乐条目选择调用此函数小结在本次的课程设计中,充分认识到了自己的不足之处,以与许多需要学习的地方。在实验中也遇到了许多问题,在界面设计与实现上花费了许多时间,对MFC的不熟悉也是进度缓慢的一个重要原因。并且在许多C+的根底知识不是很扎实,暴露出问题。在教师的指导下,同学的帮助下完成了程序,也学到了许多新的知识。这次的课程设计,收获了许多新知识,提高了分析问题和解决问题能力。在课程设计中学习了MFC的新知识,知道了更多的Windows API,在以后的学习中,相信这些新知识都能够很好的帮助学习。并且在此次实验中,能够与同学更好的交流,与同一组的同学也有更好的了解,能够分工完成项目,增长了经验。第三章 测试计划3.1测试方案本游戏的测试方法采用检查各个功能能否实现的方法测试项目与功能控制区功能测试开始按键:实现游戏的开始暂停按键:实现游戏暂停继续按键:实现游戏继续菜单区功能测试新游戏菜单项选择项:游戏完毕从新开始新一轮的游戏退出菜单项选择项:退出游戏开始菜单项选择项:开始游戏暂停菜单项选择项:暂停正在进展的游戏从新开始:重新开始游戏停止菜单项选择项:停止正在进展的游戏帮助提示菜单项选择项:游戏控制键游戏区功能测试:显示俄罗斯方块预览区域:显示下一个方块的样式测试人员与目的测试人员:雷元刚X柯测试目的:找出程序中存在的Bug,并且完善相关功能。 测试结果测试1:名称:控制区功能测试目的:测试控制区各个功能的按钮。内容:包括游戏开始,暂停,继续,停止测试图如图:图3.1 程序界面图测试结果:开始,暂停,继续功能都正常作用。测试2:名称:菜单区功能测试目的:测试菜单区各个子菜单的功能内容:游戏菜单的帮助选项菜单,音乐设置菜单以与子菜单下控件的正常工作。测试图:图3.2 程序帮助界面图测试结果:帮助对话框能够正常工作,菜单项以与子菜单项也能够作用。测试3:名称:显示区功能测试目的:测试玩家操作的功能内容:实现方块的移动,下落翻转,消除升级等。测试图如图3.3:图3.3 游戏完毕图测试结果:可以正常游戏,能够开始,暂停,完毕,重新开始,但是存在Bug,在完毕的位图不能很好消失,方块还能够在按键下运动,还存在问题,需要改正。第四章 致谢经过两天的不懈努力,很兴奋能完成一个C+编程,紧X的心终于可以平静了。从中体会到以与学习到很多关于C+的很大方
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号