ImageVerifierCode 换一换
格式:DOC , 页数:40 ,大小:519KB ,
资源ID:10525994      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10525994.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(俄罗斯方块游戏系统设计(含完整程序)大学毕设论文.doc)为本站会员(zf)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

俄罗斯方块游戏系统设计(含完整程序)大学毕设论文.doc

1、 毕业设计(论文)正文题 目俄罗斯方块游戏专 业班 级姓 名学 号指导教师职 称俄罗斯方块游戏摘要: 在现代信息高速发展的时代,电子游戏已经深入了人们的日常生活,成为了老少咸宜的娱乐方式,但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的艺术,设计,声音和软件,所以并不是人人皆知,直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如汽车,家电等传统行业,也正因为如此,游戏人才的教育培养远落后于行业的发展。 俄罗斯方块是一个老少咸宜的小游戏,它实现有四个正方形的色块组成,然后存储于一个数组的四个元素中,计算机随机产生七种不同类型的方块,根据计算机时钟控制它在一定的时间

2、不停的产生,用户根据键盘的四个方向键进行向左,向右,向下,翻转操作。然后程序根据这七种方块折叠成各种不同的类型。 论文描述了游戏开发的背景,意义,算法分析,功能实现,功能测试。以C+为开发语言进行设计与实现。关键词:电子游戏,算法,C+,测试The Russian square piece Abstract : In the era of high-speed development of electronic of information, computer game has enter peoples daily life, become an amusement adapt to old

3、 and young. But game design is a combination of fast-moving technology ,the complexity of integrating design,art,audio and software into a single production,so this thechnology isnt known by everyone .up-to-date,there are few people work at game design all the same,whereas,thedevelopment of game ind

4、ustry more faster than traditional industry as home appliances and automobile,by the reason of this situation,the education and training of person with ablity of game design drop behind the development of game industry. The Russian square piece is a get-away drama with all proper old young ,it carry

5、 out to be constitute by four pieces of colours of exact square piece ,then save in one four chemical elements of the piece set ,random creation dissimilarity of calculator seven the square piece of the category type ,control it according to the calculator clock in certain time continuously creation

6、 , the customer is inside out according to four directions key control of the keyboard ,to left ,rightwards and get down ,(the realization of the control key is to be carry out by the event handing of the direction key of the keyboard) Then the procedure pileds according to these seven kinds of squa

7、re pieces various different model. The thesis has described the game history ,has developed this game history ,has developed this game environment, development significance of game .Knowledge abiding by a software engineering ,definition begins from software problem ,proceed to carry out feasibility

8、 study ,need analysis ,essentials design,the at last has carried out a testing on the software engineering knowledge hierarchy .The computer games design and practice are designed o eclipse developing platform with C+ developing instrument ,under Microsoft Windows XP system this time.Key Words: elec

9、tronic game calculate way C+ test目 录1引言11.1课题背景11.2毕设意义22需求与算法分析32.1需求分析32.1.1 游戏需求32.1.2游戏界面需求42.1.3 游戏形状(方块)需求42.2算法分析52.2.1定义方块的数据结构52.2.2俄罗斯方块流程53系统功能实现73.1产生主窗口73.2定义俄罗斯方块数据结构83.3游戏的主逻辑93.4销行功能实现113.5中断操作流程的实现133.6变形的实现153.7 游戏区域绘图的实现163.8 游戏方块绘制203.9 烟花燃放功能224功能测试244.1测试环境244.2图像功能测试244.3销行和计分

10、功能测试274.4速度功能测试285总结29参考文献30致谢31装订线 毕业设计俄罗斯方块的程序设计1引言计算机游戏产业在随着网络的发展有了长足的发展。游戏最早起源于纯文字的交互游戏MUD,MUD是英文Multi-user Dungeons的缩写。纯文字交互,顾名思义,是一纯文字的形式来进行游戏。即,所有的场景描述、物品的样子、所有人的行动、时间的描述都是用文字的方式表达的。总之,文字MUD是一个很需要想象力的游戏形式,需要从文字转化成玩家自己脑海中的现实场景。随着电子元器件的发展,电子产品迅速发展。掌上游戏机和电视游戏机在80年代和90年代风靡一时,此时由苏联人Alex Pajitnov制作

11、的游戏俄罗斯方块在掌上游戏机和电视游戏机上流行,其造成的轰动和经济价值成为游戏史上的大事。所以本文通过用C+实现俄罗斯方块学习游戏的整个设计和测试过程,学习用基于Windows的游戏程序设计。1.1课题背景 俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,(控制键的实现是由键盘的方向键的消息函数实现)。然后程序根据这七种方块堆叠成各种不同的模型。基于Windows的游戏设计有很多方式,如基于java跨平台的设计,基于

12、.net平台的设计和基于MFC的设计,三种设计各有优缺。基于java的设计能够充分运用java跨平台的特性,便于移植,可以做到一次代码在不同环境下的运行,从而大大提高可移植性,便于在移动设备上运行,但是基于java的设计由于运行在虚拟机上,效率比较低。基于.net平台的设计可以利用.net平台提高的接口大大简化设计过程,然而其通用性不好,需要.net平台支持,在执行效率上也不如MFC程序。基于MFC的程序设计具有执行高效的特点,跟windows的契合比较好,但不具有跨平台能力。 相比三种设计方案,为了能够在Windows平台上以更好的性能运行,本文采用VC+基于MFC的设计,来完成俄罗斯方块的

13、游戏。 1.2毕设意义此次毕设通过用C+设计与实现俄罗斯方块游戏。包括系统的需求分析;系统总框图及每个模块的设计分析;MFC应用程序架构;框架的扩展;算法的设计与实现;游戏的内部实现;游戏区域绘图的实现;系统存在的问题及错误处理;以及游戏的测试和改进。通过此次毕业设计,我对软件设计的过程有了清晰的认识,通过编写游戏的各个方面工作学习了设计思想,程序架构,数据结构和算法,同时也对windows程序设计特别是基于MFC的程序设计有了直观的认识。通过游戏的测试学习到了常用的测试过程,测试方法。2需求与算法分析2.1需求分析2.1.1 游戏需求功能性需求如下:随机给出不同的形状(长条形、Z字形、反Z形

14、、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,若同时消去两行以上则会放烟花来庆祝,游戏可以设置难度,难度主要由方块的下降速度决定,下降速度越大难度越大,若在游戏中各形状填满了给定区域,为输者。如下表(表2.1)为游戏功能性需求表。功能 简介 顺时针旋转顺时针旋转转块逆时针旋转逆时针旋转转块绘制转块指定画板上绘制转块擦除矩形指定画板上擦除矩形右移动右移动转块左移动左移动转块下移动下移动转块丢下转块在画板上丢下转块燃放烟花在面板内根据一次得分多少燃放烟花计分根据用户消去的行数计分表2.1示例作为玩家,玩家可以控制难度,查看帮助等,对于操作性的需求如下: 玩家可以自己

15、来控制方块下落的速度。 玩家可以自己来控制游戏的难度。 玩家可以看到游戏的积分。 对本游戏有帮助说明和作者介绍等2.1.2游戏界面需求良好的用户界面,有提示显示和分数显示。让方块在一定的区域内运动和变形,该区域用一种颜色表明,即用一种颜色作为背景,最好设为黑色。还需用另一种颜色把黑色围起来,宽度适中,要实现美感。将整体界面分为三部分:左侧半部分用来存放俄罗斯方块,是游戏的活动区,用户操作的图形变化在这个主界面区完成。右上侧部分显示下一次要产生的俄罗斯方块形状,以便用户预先知道,增加游戏的可玩性。右侧下半部分用来显示用户的分数和当前等级,以便让用户有成就感增加可玩性。如图为整体的界面设计需求效果

16、,将整个界面分成了三部分,显得简易清爽,作为用户界面让玩家感觉比较舒服得体。如图2.1所示:图2.1示例2.1.3 游戏形状(方块)需求良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆 时针变形,一般为逆时针。为了使游戏更加美观更具可玩性,在绘制方块的过程中不采用默认的绘制方式,而是用经过处理的图片效果,这样让组成的方块更加美观,同时彩色的方块也让人赏心悦目,增加了游戏的可玩性。下图(图2.2)就是用来拼接方块颜色的样板色。图2.2示例由图可见这种带有实体效果的方块比一般的二维方块更具立体效果,更美

17、观,会更吸引玩家。2.2算法分析2.2.1定义方块的数据结构对于方块在某一瞬间的位置标识,我们采用一个42的小数组标识出来,即用4个存储单位空间存储当前下坠物的每一子块的位置,也就是说,用4个存储单位空间存储当前下坠物的每一子块的位置来对整个下坠物件的位置进行标识,而每个存储空间的大小就是一个典的坐标值(x,y),而每个方块按照从左到右的方式进行编号,并且在编号过程中对于同一列的方块实行从上到下进行编号 。如图2.3所示:(x0,y0)(x1,y1)(x2,y2)(x3,y3)2301(x0,y0)(x1,y1)(x2,y2)(x3,y3)0123方块编号图2.3示例方块表示方法,即四个小方块

18、的坐标设定:其中一个方块是原点,坐标为(0,0);右侧方块坐标(1,0),下面的方块坐标(0,1),以此类推。 如下为程序中定义的各种方块的数据结构定义。 2.2.2俄罗斯方块流程俄罗斯方块流程(图2.4):到达底部游戏结束到达底部结束销行操作生成下一个下坠物将新生的下坠物代替旧的“下一个下坠物“将旧的“下一个下坠物”用作当前 下坠物销行操作游戏结束处理下降一个单位开始图2.4示例如图中所示是俄罗斯方块的处理流程,从开始判断是否到底底部,到达则做销行操作,然后生成下一个下坠物,将新的下坠物代替旧的下一个下坠物,将旧的下坠物当做当前的下坠物,下到底部判断是否做销行操作,然后判断游戏是否结束,未结

19、束则继续新一轮的生产方块,若方块达到了顶部,占满了空间则游戏结束。 3系统功能实现3.1产生主窗口通过InitInstance函数来初始化窗口的各个信息,包括窗口的位置,位图信息按钮和时钟初始化等。InitInstance函数的实现如下,程序首先调用CreatWindow函数创建初始窗口句柄,然后设置窗口显示坐标,将窗口居中,用空的位图来初始化使界面内都是是空的。定义好窗口和时钟最后讲窗口显示出来。BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)HWND hWnd;int x,y;hInst = hInstance; / Store in

20、stance handle in our global variablehWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);if (!hWnd)return FALSE; /窗口居中, 高度包含标题栏的30x=GetSystemMetrics(SM_CXSCREEN);y=GetSystemMetrics(SM_CYSCREEN);MoveWindow(hWnd,(x-GAMEWIDTH)/

21、2,(y-GAMEHEIGHT-30)/2,GAMEWIDTH,GAMEHEIGHT+30,false);/设置dchdcwindow=GetDC(hWnd);hdcmem=CreateCompatibleDC(hdcwindow);hdccanvas=CreateCompatibleDC(hdcwindow);/用空位图初始化DChmapnull=CreateCompatibleBitmap(hdcwindow,GAMEWIDTH,GAMEHEIGHT);SelectObject(hdccanvas,hmapnull);SelectObject(hdcmem,hmapnull);/位图初始化

22、bmStart.Init(hInstance,IDB_BITMAP_START);bmStart.SetDevice(hdccanvas,hdcmem);bmStart.InitSizeList(1,PICW,PICH);bmBack.Init(hInstance,IDB_BITMAP_BACK);bmBack.SetDevice(hdccanvas,hdcmem);bmBack.InitSizeList(1,200,200);bmSquare.Init(hInstance,IDB_BITMAP_SQUARE);bmSquare.SetDevice(hdccanvas,hdcmem);bmSq

23、uare.InitSizeList(5,22,22);bmBomb.Init(hInstance,IDB_BITMAP_BOMB);bmBomb.SetDevice(hdccanvas,hdcmem);bmBomb.InitSizeList(5,22,22,1);/按钮mybutton.Init(hInstance,IDB_BITMAP_BUTTON);mybutton.SetDevice(hdccanvas,hdcmem);mybutton.InitButton(6,BtRect);/按钮myclock.Init(hWnd,TIME_INFO);/时钟srand(unsigned)time(

24、NULL);/初始化随机函数/ 显示窗口ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);return TRUE;3.2定义俄罗斯方块数据结构俄罗斯方块通过坐标来实现,其数据结构如下:/每四个点,表示一种方块/(一维,二维都可以做)POINT gl_square28=/方形0,0,1,0,0,1,1,1,/长条0,-1,0,0,0,1,0,2,/Z-1,-1,0,-1,0,0,1,0,/Z-1,1,0,1,0,0,1,0,/L-1,-1,-1,0,0,0,1,0,/L-1,0,0,0,1,0,1,-1,/-1,0,0,0,1,0,0,-1,;3.3游戏

25、的主逻辑 将新的下坠物放置到游戏区域中去,这时可能出现马上到达底部的情况,因此需要对它进行判断,如果是到达底部,则进行销行处理,并且修改相应的数据状态。而判断是否已经到达了底部,可以通过当前下坠物件所对应的接触面的方块位置为被占用状态来确定,利用数组记录17种下坠物的14种形态的接触面信息。统计分数:在消行处理里面有一个专门用来统计消行数的变量,然后根据变量的值决定分数的多少,程序统计分数是:消一行得10分,同时消2行得30分,消得3行得60分,消得4行得100分。如果总分数达到过关条件就过关,改变游戏速度。没有达到过关分数或者没有满行,则加载下一个方块继续游戏。如图3.1所示:是否堆积方块,

26、判断接触面状态及是否得分2.统计分数判断是否过关关数增加,游戏速度将变快。调用游戏速度模块增加游戏速度视图重绘(InvalidateView())1.判断行满、处理销行、堆积方块向下移动图3.1示例以下为实际代码中游戏的主要逻辑检测函数Checkgame的代码部分,根据系统的状态确定是否生产新的方块还是移动当前方块直到其落到底部判断是否该销行,进行下次的循环。if(INVALID=squareNow.id)/如果没有当前移动的方块/生成当前方块memcpy(&squareNow,&squareNext,sizeof(squareNext);squareNow.pos.x=4;squareNow

27、.pos.y=0;iTime=0;if(!CanMove()/如果新生成的方块无法移动,失败iState=GAME_FAIL;myclock.ReStart(TIME_FAIL);/生成下一个CreateNext();else/移动当前方块iTime+;if(iTime=12-iSpeed)iTime=0;if(!CanMove()/清除当前方块squareNow.id=INVALID;/写入数组PutSpare();elsesquareNow.pos.y+;3.4销行功能实现当俄罗斯方块占满了空间内的一块或者多行时,系统就该消去一行,同时给用户相应的得分,当用户得分达到20分以上时则根据分数等级给予用户烟花表演以示鼓励。用户游戏空间有19行,10列,每次判断销行时从最低行开始判断是否十列都被俄罗斯方块填满,填满则清楚该行然后循环判断。其代码如下。void GAMEBOX:ClearRow()int i;int m,n;/行列int iNum;int iScoreRow=0,10,30,60,100;/分值,1行10分,2行30,3行60,4行100int iRow;/消去多少行iRow=0;/第19行,是最底一行for(m=19;m0;m-)iNum=0;for(n=0;n0;i-)/移动memcpy(gamemapi,gamemapi-1,10*siz

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1