俄罗斯方块毕业论文.docx
《俄罗斯方块毕业论文.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块毕业论文.docx(27页珍藏版)》请在冰豆网上搜索。
俄罗斯方块毕业论文
前言
俄罗斯方块游戏是一款风靡全球的电视游戏机和掌上游戏机产品,它曾经造就了无与伦比的商业价值,影响了一代游戏产业链。
这款游戏的最初是由苏联的游戏制作人AlexPajitnov制作的,它看似简单但却变化无穷,令人上瘾,而且引发无数遐想。
相信广大读者都还记得为它如痴如醉、茶不思饭不想的那个时代。
随着信息社会日新月异的发展,计算机已经普及到人们的日常生活中。
为了使用户在繁忙的日长工作中的得到放松,于是出现了各种各样的休闲工具,如聊天工具,休闲游戏等。
《俄罗斯方块》作为一款经典的休闲游戏在该游戏新鲜出炉时就显得非常直观,虽然经过了大量的变形和更改,但游戏的核心依然保持不变。
这个小游戏在VisualStudio2005的环境下开发的,从而了解使用VisualStudio2005集成开发环境来迅速创建小型简单游戏的方法。
在开发中我们可以体验到C#在开发界面软件程序或者游戏程序方面所具有的强大功能,利用其可视化的编程方式可以很轻松地创建简单的游戏界面。
同时它还提供了相当优秀的代码编辑,调试,向导,编译和可视化资源编辑等功能,这些强大的功能使它成为当今世界最好的系统开发工具之一。
摘要
俄罗斯方块游戏,从俄罗斯人阿莱克斯帕伊特诺夫在八十年代末制作成功以来,以其规则简单,容易上手,游戏过程变化无穷,且能在娱乐中益智等特点,它已经成为一个家喻户晓,老少皆宜的大众游戏。
游戏实现由四个方块正方形的色块组成,然后储存在数组的四个元素中,计算机随机产生不同七种类型的方块。
用户根据键盘的四个方向键控制翻转、向左、向右和向下操作(控制键的实现是由键盘的方向键的事件处理实现)。
然后程序根据这七种方块堆叠成各种不同的模型。
从软件问题定义开始,接着进行可行性研究、需求分析、概要设计、详细设计,最后对软件进行了测试,整个开发过程贯穿软件开发的知识体系。
这款游戏具有丰富的游戏操作功能,用户可以根据自己的操作水平和喜好进行相应的游戏操作设置,从而不仅游戏初学者也能从中享受到成功的快乐,即便高水平的玩家也能品尝到挑战的刺激。
该游戏在VisualStudio2005环境中使用C#开发实现。
C#是基于面向对象的开发设计的编程语言,面向对象的开发在近年已广为普及,成为软件开发最基本的方法。
VisualStudio2005作为当前功能最为强大的可视化集成开发环境,它不仅支持传统的软件开发方法,更重要的是它能支持可视化的开发风格。
关键词:
俄罗斯方块,面向对象,集成开发环境
Abstract
Inthe1980s,aRussiannamedAlexPajitnovdesignedanddevelopedtheTetrisgame.AfterthattheTetrisgamehasbecomeawell-knownandallage’sgamebecauseofitssimpleroles,easycontrollingandchangeablegamingprocess.TheTetrisgamethatIdesignedallowsyoutoplaythegameinyourownway.IdesignedtheTetrisgame,thensaveinonefourchemicalelementsofthepieceset,randomcreationdissimilarityofcalculatorseventhesquarepieceofthecategorytypecontrolit.
Thecustomerisinsideoutaccordingtofourdirectionskeycontrolofthekeyboard,toleft,rightwardsandgetdowntheoperation(therealizationofthecontrolkeyistocarryoutbytheeventhandlingofthedirectionkeyofthekeyboard),thentheprocedurepiledsaccordingtothesesevenkindsofsquarepiecesvariousdifferentmodel.Definitionbeginsfromsoftwareproblem,proceedtocarryoutfeasibilitystudy,needanalysis,essentialsdesign,detaileddesign,theatlasthascarriedoutatestingonthesoftware,entireexploitationprocesshasrunthroughthesoftwareknowledgehierarchy.Playercanchangetheconfigurationofcontrollerbythemselves,sonotonlybeginnerscanenjoythegame,butsomehighlevelplayersalsocanchallengethemselves.ThegameisdevelopedinC#withMicrosoftVisualStudio2005.C#isaprogramminglanguagebasedwell-knowntoalltheseyearsandithasbeenabasicssoftwareprogrammingmethodnow.AsthestrongestIDE,theMicrosoftVisualStudio2005supportsclassicdevelopingmethodandvisualdevelopingaswell.
Keywords:
Tetris,OOP,IDE
第一章绪论
1.1课题背景及目的
背景:
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与经济价值可以说是游戏史上的一件大事。
这款游戏最是由苏联的游戏AlexPajitnow制作的,它看似简单却变化无穷,令人着迷,相信大多数人都还记得为它的规则简单,容易上手,且游戏过程变化无穷。
而在“联众俄罗斯方块”中,游戏人既能感受到游戏中的乐趣,也能提供一个展现自己高超技艺的场所,究其历史,俄罗斯方块最早还是出现在PC机上,无数人进入游戏编程的世界都是从编写俄罗斯方块游戏开始的,因为这是检验一个人对开发语言,环境和基本数据结构知识熟练程度的便捷途径。
MicrosoftVisualStudio提供了开发Window应用程序的最迅速,最简捷的方法。
不论Window应用程序的资深专业开发人员还是初学者,MicrosoftVisualStudio都为他们提供了整套的工具,以便开发应用程序。
目的:
在实现俄罗斯方块的基本游戏的前提下,优化其算法与数据结构,并增加一些传统游戏中没有的新特点,最终实现一款小巧精致的益智俄罗斯方块游戏。
本课题要求在.net平台下采用C#实现,图形使用GDI,并增添一些传统游戏没有的新特点,如用户信息和分数排行的数据库,登录界面的Flash动画制作等。
通过对本课题设计的实现,能提高对熟悉.net开发环境,数据库的运用,Flash动画制作。
1.2国内外研究概况
俄罗斯方块红遍世界的各个角落,一个本来是吃大锅饭的人在消极怠工的时候发明的娱乐工具成了造福全人类的宝贝,它的价值远远超越了开发时候的预想,这是一个算法实现的比较简单,但又乐趣无穷的游戏。
课题用C#实现,这是一种基于面向对象的方法正受到全世界越来越强烈的关注和高度重视,针对日趋复杂的软件需求,业界也越来越崇尚利用面向对象的方法和思想进行软件开发。
1.3开发工具简介
C#作为微软在21世纪推出的新语言,有着其他语言无法比拟的优势。
C#语言的应用非常广泛,在软件行业的多个应用领域中,它已成为基于.NETFramework解决方案的首选语言。
C#作为一门新的程序设计语言,集中了C、C++和Java等语言的优点,是一门现代的、优越的、具有广阔发展前景的程序设计语言。
SQLServer2005是数据库管理系统,具备了通常数据库管理系统最基本的功能。
MicrosoftSQLServer是一种基于客户机/服务器的关系型,一种基于数据库管理系统,用来对存放在计算机中的数据库进行组织、管理和检索,它使用Transact-SQL语言在检索,它使用语言在服务器和客户机之间传送请求。
1.4研究的主要内容
在整个俄罗斯方块游戏项目中,我负责数据库模块设计,数据库与界面之间的连接,用户登录模块设计,管理窗体中负责实现管理员对普通用户进行添加,修改,删除的操作。
在游戏窗体的界面中,负责窗体的菜单选项和可见控件的实现。
最后是对软件的用户登录、管理员管理操作、数据库与界面之间的连接、成绩排行、游戏界面菜单选项和课件控件分别进行测试。
研究主要内容如图1-1所示:
图1-1:
研究的主要内容
1.5研究方法、技术路线
本课题完全按照课题要求实现,在保持原有俄罗斯方块规则不变的前提下,尽可能的提高游戏的乐趣。
比如添加数据库模块,数据库与C#连接,用户登录模块,管理员对普通用户进行管理模块等等。
本设计在.net平台下采用C#实现。
创建数据库,增加项目的复杂性,用两个Label控件的叠加,可见性与不可见性来更改用户权限。
用Read()方法读取数据库表中数据。
用SQL语句的插入、更新、删除更新数据等等。
第二章系统分析
2.1研究可行性分析
2.1.1设计目的
综合运用在校期间所学理论知识和技能,设计开发俄罗斯方块,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高软件实践能力,为将来实际工作打下坚实的基础。
2.1.2游戏面向的用户群体
游戏爱好者,休闲娱乐!
2.1.3可行性研究前提
(1)系统开发的总体任务是实现游戏的可操作性、美观性、及时性及适当的功能
扩展。
(2)采用结构化设计方法,开发出一个可操作性、美观性、及时性的游戏,并通过此次软件开发过程全面提高自身的综合素质。
(3)通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。
利用现阶段所达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个有一定可玩性的游戏软件。
(4)本游戏尽量追求游戏操作的合理性及正确性,但是仍不排除会出现一些偶然性的错误;同时游戏也尽量追求界面的美观性及功能的丰富性,但是基于时间的关系,可能会有极少数的扩展功能不能实现。
2.1.4可行性分析
(1)管理可行性:
本游戏设计的目的只在于提高自身实践水平,并不对外发布,因此完全具有管理可行性。
(2)经济可行性:
由于本游戏的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台电脑使用便可,所以不用考虑到经济问题。
(3)社会可行性:
本游戏的开发作为毕业课程设计以巩固先前所学的知识,以个人为单位,仅供个人平常娱乐所用,无须考虑有可能造成的社会社会影响,不用考虑到法律、版权等的社会因素,所以在这方面是完全可行的。
2.1.5结论
综上所述,本游戏软件的技术成熟、完备。
各方面均无重大问题,因此本游戏软件可以开始着手编写。
2.2系统需求分析
2.2.1用户界面需求
用户界面需求,如表2-1所示:
表2-1:
用户界面需求
需求名称
详细要求
窗体界面友好
人机交互,玩家可以很方便进行操作
界面扩展性
玩家可以对方块的背景图进行自定义
支持声音
改变背景音乐
界面颜色
比较新异
2.2.2软硬件环境需求
软硬件环境需求,如表2-2所示:
表2-2:
软硬件环境需求
需求名称
详细要求
硬件要求
酷睿/1G以上
系统平台
WinXP
运行环境
Windows系列
2.2.3游戏质量需求
游戏质量需求,如表2-3所示:
表2-3:
俄罗斯方块质量需求表
主要质量属性
详细要求
正确性
消息在不同系统平台之间进行传递和显示时不会出现乱码现象
健壮性
能够容纳100-200人同时在线交流,服务器端程序连续应工作半年以上
可靠性
应用程序异常退出及崩溃的机率小于等于5%
性能效率
用户消息发送与接收的延迟时间小于等于5秒
易用性
不用安装,操作简便
安全性
保证用户的信息在传输过程中不被窃取、不会泄漏至外网
可扩展性
可在当前需求基础之上进行功能上的扩展
兼容性
可运行在大多数主流的硬件环境中
可移植性
可运行在Windows操作平台上
第三章系统说明
3.1游戏功能描述
对于俄罗斯方块游戏,其功能描述如下:
(1)当程序运行时,出现登录界面,填写用户名称和密码,正确后,管理员进入管理界面,进行添加、修改、删除操作。
普通用户进入主界面,进行游戏。
(2)游戏开始,游戏区域上方不断地出现预定义形状的下坠物件。
(3)下坠物件可以通过旋转改变其显示形态,并且不断地往下坠,直到它接触到游戏区域底部或其他之前已经垒叠起的下坠物件。
当一个下坠物件到达底部后,其位置则确定下来并占有该空间的位置区域。
(4)当游戏区域的某一行被下坠物件完全填充,则消除该行的所有下坠物,垒在其上面的物件将掉下代替该行空间。
(5)游戏的结束是以下坠物件的顶部到达游戏区域的顶部作为判断依据,表示装满溢出。
并且在某一瞬间,下一个方块的形态在游戏区域的右上方有预先提示,同时每抵消一行空间积分自增。
3.2系统功能分析
俄罗斯方块游戏对广大读者来说应该并不陌生,所以本项目实例的主要功能就是控制游戏的运行,实现游戏的完整运行。
具体来说,主要包括如下功能模块:
(1)数据库与界面之间的连接:
完善项目。
(2)游戏登录界面:
管理员和普通用户进行用户名和密码的核对。
(3)游戏管理员管理界面:
管理员可以对用户进行添加、修改、删除操作。
(4)游戏控制菜单:
可以控制游戏的开始、退出和样式的选择。
(5)设置菜单:
可以设置游戏的显示样式,并提供游戏帮助等信息。
3.3算法的描述和流程图
首先,在游戏开始后检查当前的下坠方块是否已经到了底部,如果不是的话就将下坠方块到了该定时器间隔的时间后整体往下移动一个单位,否则,进行到达底部后的操作。
对于到达底部后的操作,可以分为以下几个步骤来处理。
(1)先对进行到底部后的所有可以抵消的行进行销行处理。
(2)生成一个新的“下一个方块”,这个方块的形态需要随机地生成。
(3)在将旧的“下一个方块”置换成新的下一个方块,并在屏幕右上方显示。
(4)将当前的“方块”换成以前产生的旧的“下一个方块”,并且马上使用。
由于在这个过程中已经重新使用了一个新的下坠方块,在刚使用时并且还没有下降前,应该判断它是否已经不可以下降到底部(也就是说,在方块已经堆砌到接近游戏区域顶部的时候,下坠方块一旦被使用,就已经到达了底部),如果时刚好到达底部则实行销行检测和操作,并且判断顶部(第一行)的某些区域是否已经被占用了,是则表示游戏已经触发结束的标志时间,应该进入游戏结束状态。
(5)在前面判断为到达底部后,进行销行检测与操作。
(6)在下坠方块到达底部的同时,判断是否已经到达了游戏的顶部,是则表示游戏结束,进行游戏结束的资源释放与数据库环境清理工作。
俄罗斯方块游戏的流程图,如图3-1所示:
图3-1:
俄罗斯方块游戏流程图
3.4系统功能模块图
系统开发流程图,如图3-2所示:
图3-2:
系统开发流程图
系统运行流程图,如图3-3所示:
图3-3:
系统运行流程图
游戏主窗体菜单和可见控件运行流程图,如图3-4所示:
图3-4:
游戏模块运行流程图
第四章系统设计
4.1数据库模块设计及部分代码
在建立数据库时,要根据项目的需要,设计表格。
打开SQLServer服务器,新建数据库,命名为Youxi。
创建游戏用户表,列名主要包括ID、用户名称、用户密码和用户权限,其中ID为主键,游戏用户表主要是用于保存用户的信息。
游戏用户表设计如图4-1所示:
图4-1:
游戏用户表的设计
游戏用户表的测试数据如图4-2所示:
图4-2:
游戏用户表的测试
创建游戏成绩排行,列名包括用户名称和分数,其中用户名称为主键,用于保存用户游戏成绩。
游戏成绩排行设计如图4-3所示:
图4-3:
游戏成绩排行的设计
游戏成绩排行的测试数据如图4-4所示:
图4-4:
游戏成绩排行的测试
4.2数据库与界面之间的连接
在用户登录窗体的界面中,数据库与界面连接是整个项目的枢纽,关键代码如下:
conn=newSqlConnection("server=.;uid=sa;pwd=123;database=Youxi");
//server为数据库服务器,uid为登入名,pwd为登入密码,database为数据库名
DataSetds=newDataSet();//初始化实例
da=newSqlDataAdapter("select用户名称,用户权限from用户表",conn);
if(conn.State==ConnectionState.Closed)//描述与数据源连接的当前状态
{
conn.Open();
}
da.Fill(ds,"用户表");
conn.Close();
name.DataSource=ds.Tables["用户表"];
name.DisplayMember="用户名称";
4.3用户登录模块设计及部分代码
打开“MicrosoftVisualStudio2005”,新建项目,名称为youxi,新建项目图示如图4-5所示:
项目类型
图4-5:
新建项目图示
在项目开发环境中,创建文件夹用来存放项目中的各种文件和窗体,俄罗斯方块游戏项目结构如图4-6所示:
图4-6:
俄罗斯方块游戏项目结构
创建用户登录模块的登录窗体,命名为frnLogin,窗体界面包括用户名称、用户密码和用户权限。
普通用户填写用户名称和用户密码,点击登录按钮,正确后界面转到主窗体。
管理员则转到管理界面。
用户登录模块设计如图4-7所示:
图4-7:
用户登录模块登录界面
登录窗体中,只允许登录的用户信息是数据库Youxi中用户表存在的数据。
认证用户输入的用户名称和用户密码要与数据库中一样,否则登录失败,重新输入。
管理员和普通用户权限不同,要根据用户名称改变用户权限。
用户登录模块关键代码如下:
da=newSqlDataAdapter("select*from用户表where用户名称='"+name.Text.Trim()+"'and用户密码='"+pwd.Text.Trim()+"'",conn);
DataSetds=newDataSet();
if(conn.State==ConnectionState.Closed)
{
conn.Open();
}
da.Fill(ds,"用户表");
conn.Close();
if(ds.Tables["用户表"].Rows.Count>0)
{
//判断权限,根据权限选择进入不同窗体
if(userRight=="admin")
{
guanlig=newguanli();
this.Hide();
music.Stop();
g.Show();
}
elseif(userRight=="user")
{//给游戏界面传输用户信息
frmMainfrmmain=newfrmMain();
frmmain.UserFen=userfen;
frmmain.UserName=name.Text.Trim();
frmmain.Owner=this;
this.Hide();
music.Stop();
frmmain.Show();
}
}
用户名称的文本框获取数据库中相应的用户名称,用户权限根据用户名称的改变而改变,用两个Label控件的叠加,用控件的可见性与不可见性来实现的,关键代码如下:
com=newSqlCommand("select用户名称,用户权限from用户表where用户名称='"+name.Text+"'",conn);
if(conn.State==ConnectionState.Closed)
{
conn.Open();
}
dr=com.ExecuteReader();
if(dr.Read())
{//显示权限
userRight=dr["用户权限"].ToString();
if(userRight=="admin")
{
guanli.Visible=true;
putong.Visible=false;
}
elseif(userRight=="user")
{
guanli.Visible=false;
putong.Visible=true;
}
}
4.4管理员管理模块设计及部分代码
游戏管理员管理界面,管理员可以对普通用户分别进行添加、修改和删除的操作管理。
游戏管理员管理内容图4-8所示:
图4-8:
游戏管理员管理内容
(1)在管理员对用户进行添加操作时,根据用户名称和用户密码进行添加,输入用户名称和用户密码,完成后点击“确定”按钮,管理员添加普通用户步骤如图4-9所示:
图4-9:
管理员添加普通用户步骤
管理员添加普通用户,判断添加的用户名称是否已经存在的关键代码如下:
da=newSqlDataAdapter("select*from用户表where用户名称='"+t1.Text+"'",conn);
DataSetds=newDataSet();
if(conn.State==ConnectionState.Closed)
{
conn.Open();
}
intcount=da.Fill(ds,"用户表");
conn.Close();
if(count!
=0)
{
MessageBox.Show("该用户名称已存在,请重新输入!
");
return;
}
管理员添加普通用户,把添加的用户添加到数据库中,关键代码如下:
stringSQLString;
SQLString="insertinto用户表(用户名称,用户密码,用户权限)values(@用户名称,@用户密码,@用户权限)insertinto成绩排行(用户名称,分数)values(@用户名称,'0')";
com=newSqlCommand(SQLString,conn);
co