基于C的俄罗斯方块设计毕业论文.docx
- 文档编号:29071694
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:76
- 大小:84.78KB
基于C的俄罗斯方块设计毕业论文.docx
《基于C的俄罗斯方块设计毕业论文.docx》由会员分享,可在线阅读,更多相关《基于C的俄罗斯方块设计毕业论文.docx(76页珍藏版)》请在冰豆网上搜索。
基于C的俄罗斯方块设计毕业论文
职场大变样社区(
全套资料,全部50元以下
毕业设计(论文)
题目:
基于C#的俄罗斯方块设计
系别信息工程系
专业名称电子信息工程
班级学号
学生姓名
指导教师
二O一一年五月
基于C#的俄罗斯方块游戏设计与实现
学生姓名:
班级:
0782053
指导老师:
摘要:
俄罗斯方块游戏,从俄罗斯人阿莱克斯·帕伊特诺夫在八十年代末制作成功以来,以其规则简单,容易上手,游戏过程变化无穷,且能在娱乐中益智等特点,它已经成为一个家喻户晓老少皆宜的大众游戏。
本人设计的这款俄罗斯方块游戏,具有丰富的游戏操作功能,用户可以根据自己的操作水平和喜好进行相应的游戏操作设置,从而不仅使游戏初学者也能从中享受到成功的快乐,既便高水平的玩家也能品尝到挑战的刺激。
游戏还可以保存前五名高分信息,让用户有不断挑战新高度的乐趣。
该游戏在VisualStudio2008环境中使用C#开发实现。
C#是基于面对象的开发设计的编程语言,面向对象的开发在近年已广为普及,成为软件开发最基本的方法。
VisualStudio2008作为当前功能最为强大的可视化集成开发环境,它不仅支持传统的软件开发方法,更重要的是它能支持可视化的开发风格。
同时它还提供了相当优秀的代码编辑、调试、向导、编译和可视化资源编辑等功能,这些强大的功能使它成为当今世界最好的系统开发工具之一。
关键字:
俄罗斯方块面向对象的开发集成开发环境
指导老师签名:
TheDesignandImplementofTetrisBasedonC#
Studentname:
gongqiangclass:
0782053
Supervisor:
liaoyuan
Abstract:
Inthe1980s,aRussiannamedAlexPajitnovdesignedanddevelopedtheTetrisgame.AfterthattheTetrisgamehasbecomeawell-knownandallagesgamebecauseofitssimpleroles,easycontrollingandchangeablegamingprocess.
TheTetrisgamethatIdesignedallowsyoutoplaythegameinyourownway.Playerscanchangetheconfigurationofcontrollerbythemselves,sonotonlybeginnerscanenjoythegame,butsomehighlevelplayersalsocanchallengethemselves.Besidesallabove,thegamecansavethetoptenscores,andthisfunctioncaninspireplayerstoreachhigherpeak.
ThegameisdevelopedinC#withMicrosoftVisualStudio2008.C#isaprogramminglanguagebasedonOOP.TheOOPhasbeenwell-knowntoalltheseyearsandithasbeenabasicsoftwareprogrammingmethodnow.AsthestrongestIDE,theMicrosoftVisualStudio2008supportsclassicdevelopingmethodandvisualdevelopingaswell.Asthesametime,itsuppliesmanyfunctionssuchasoutstandingcodeeditor,debugger,Wizard,compiler,visualresourceeditorandsoon.Allthesestrongfunctionmakethistoolthebestoneintheworld.
Keywords:
TetrisOOPIDE
SignatureofSupervisor:
1绪论
1.1课题背景及目的
俄罗斯方块是一款比较经典的游戏,它曾经造成的轰动与经济价值可以说是游戏史上的一件大事。
这款游戏最初是由苏联的游戏制作人AlexPajitnov制作的,它看似简单但却变化无穷,令人着迷。
相信大多数人都还记得为它的规则简单,容易上手,且游戏过程变化无穷。
而在“联众俄罗斯方块”中,游戏人既能感受到游戏中的乐趣,也能提供一个展现自己高超技艺的场所。
究其历史,俄罗斯方块最早还是出现在PC机上。
无数人进入游戏编程的世界大多是从编写俄罗斯方块游戏开始的,因为这是检验一个人对开发语言、环境和基本数据结构知识熟练程度的便捷途径。
MicrosoftVisualStudio提供了开发Window应用程序的最迅速,最简捷的方法。
不论是Windows应用程序的资深专业开发人员还是初学者,MicrosoftVisualStudio都为他们提供了整套的工具,以方便开发应用程序[1]。
游戏软件是一种与文化背景密切联系的产品,具有很强的名族性和丰富的文化内涵,随着游戏软件在市场上的销售,与其相关的文化也随之传播。
由此发展我国自主的益智类健康的游戏软件这也是当务之急。
1.2国内外研究状况
电子游戏是最初产生产生于1971年,一个还在MIT就读的学生设计了世界上第一个业务用的游戏机。
时至今日,电子游戏仍然是外国的天下。
美国至今仍然是世界第一大游戏市场,它遵循的是以发行商为主的产业开发链模式,根据美国市场调查公司NPDGroup调查统计,美国2004年游戏总销售金额为99亿美元,占了全球游戏市场的45%。
其中游戏软件销售的具体数字是:
视频游戏软件的销售额达52亿美元,PC游戏软件销售额达11亿美元,掌上游戏销售额达10亿美元。
2004年一共约有2.48亿套游戏售出[21]
日本近几十年来疯狂的赚电子游戏的钱,从上世纪60年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本经过30多年的耕耘,终于把电子游戏这棵摇钱树培育成第一时尚娱乐产业,垄断全球业界长达10余年,对于日本来说,电玩业已是国家经济的重要支柱产业之一,在GDP中占有1/5的举足轻重地位[21]。
韩国号称世界上网络游戏产业最发达的国家之一。
迄今为止,国内网络游戏市场有超过60%的产品来自韩国的游戏软件开发商,韩国网络游戏使用国内很多游戏运营公司在游戏营销市场或股票资本市场上获得巨大的成功。
韩国游戏市场的发展不是偶然,韩国政府不仅给游戏产业以正确的定位和引导,更是将其与本国的经济发展紧密地联系在一起,做了和怀念多市场培育方面的工作。
韩国政府认识到,靠重型工业来支撑全国经济的做法是片面的,于是讲IT、娱乐产业视为新的经济增长点,开始大力扶持。
从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了富国兴邦的重担。
由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达500韩元,并未游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏产业产业服务;对指定的风险企业实行各税制优惠政策,减少甚至免除游戏企业的税务负担;简历游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。
在韩国,从制作到运营,一个网络游戏公司的起步门槛低,主要得益于政府实行的援助计划。
此外,在有利于政策形势下,韩国出现了众多的游戏院校,一些原本不涉足此领域的大学也开设了游戏相关的专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。
电子游戏在国内的发展状况
与电子游戏发达的国家相比,我国在电子游戏方面还是存在比较大的差距。
目前,我国游戏市场正处于发展阶段。
市场上游戏的软件主要来自日本、美国、韩国等地,但由本土游戏制作开发创作的游戏正在高速增加,国产原创游戏即将成为游戏的主流。
中国的游戏产业经过80年代初期台湾厂商的探索至90年代,开始了自己的研发、发行的历程,直至网络游戏的风行,让中国网络游戏开始有了飞速的发展。
1983年,智冠科技有限公司在中国台湾成立,为全球第一家签订授权重制中文版产品代理销售合约的公司,2000年智冠在台湾股票上市,2002年其控股的中华网龙在台湾上市。
1996年底,UBISOFT上海分公司暨上海育碧电脑软件有限公司成立,同年,全球游戏软件领军企业EA在中国上海城里办事处。
1997年,由尚洋公司制作的《血狮》正式上市。
1997年,北京新天地互动多媒体技术有限公司成立,该公司引进了《盟军敢死队》《古墓丽影III》等著名欧美游戏,并在1999黏在中国率先掀起“游戏软件价格革命”,全面推行50远价格体系,从此正版游戏价格开始贴近大众消费者。
1999年,业内估算中国电脑游戏市场月1.5亿元人民币。
2000年,大陆华彩软件代理发行第一款中文MMORPG《万王之王》正式推出,该游戏于1999年在台湾发行,由台湾Lager开发。
也在2000年,继《万王之王》《石器时代》《网络三国》在台湾上市之后,游戏桔子推出了《天堂》,游戏桔子成立于1995年,1999年以《便利站》在台湾奠定地位。
《天堂》这款由韩国著名游戏公司Ncsoft研发的网络游戏不但在本国大获成功,也在台湾再次夺冠。
2001年初,北京华义在中国大陆地区正式推出了《石器时代》,华义国际股份有限公司于1993年再台北成立,2001年再台湾股票上市。
《石器时代》成为了大陆当时最流行的网络游戏。
2001年,天人互动软件技术有限公司在北京成立。
当年与SEGA结成PC游戏业务的战略合作关系,发行了《樱花大战II》《文明III》《无冬之夜》等经典游戏。
2002年,引进在欧美网络游戏《魔剑》,这是首款在中国测试的欧美网络游戏。
2001年5月,“联众世界”经过3年多的迅速成长,以同时在线17万人,注册用户约1800万的规模,成为了当时世界用户数量第一的在线游戏网站[22]。
2005年1月我国网络游戏产业当年增加了50%,今后几年都以50%以上的速度增长:
第一届中国网络游戏年会报道:
中国国内网络游戏2004年规模达24.7亿元,2009年规模达到109.6亿元[22]。
1.3课题研究方法
俄罗斯方块诞生到现在已经超过20年,无数人都曾设计并实现过自己的俄罗斯方块。
本课题完全按照课题要求实现,在保持原有俄罗斯方块规则不变的前提下,尽可能的提高游戏的乐趣。
比如可调节的速度,可变化的颜色,多种不同的音效提示,可保存分数等等。
本设计在.net平台下采用C#实现,图形使用GDI+。
游戏区域所选择的控件为PictureBox,而当选择Panel或者其他控件时,重画会有明显的拖慢。
在游戏存储方面,对于游戏分数的记录使用了数据库MDF文档进行存储,而对于用户配置的存储,使用到了配置文件。
1.4论文构成及研究内容
第一章介绍了该课题的背景、目的及国内外研究状况。
第二章对课题研究的可行性进行分析。
第三章介绍了该设计实现过程中所使用到的技术原理,这些是此课题实现的基本理论。
第四章粗略的描述了课题的设计,这其中描述了课题的功能以及对这些功能的分析等。
第五章详细描述了课题各个功能的具体设计思想与具体实现的过程。
2、需求分析
2.1游戏需求
游戏区域会从顶部不断落下7种下坠物的一种,游戏区域的右侧有一方框可以提示用户下一个下坠物的形状,玩家可以移动、旋转、加速下落和一键到底自己窗口内落下的下坠物,通过用户的操作,下坠物在游戏区域以“摆积木”的形式出现。
下坠物在一行或多行堆满后就可以自动消掉,消行后会得到相应的分数,如果当前下坠物堆积至窗口顶端,即游戏结束。
2.1.2 游戏操作方法
1.按游戏界面的“控制”菜单中的“开始游戏”“暂停”“结束”“重新开始”来控制游戏的开始结束;“游戏设置”菜单对游戏进行设置,实现个性化设置。
2.键盘操作:
“←”左移一格;“→”右移一格;“↑”旋转操作;“↓”下坠物丢下;“空格键”暂停游戏;
3.“计分”显示的内容:
"得分"为本局的分数,消一行得20分。
4.“游戏速度设置”:
该游戏共有5个等级:
较慢、慢、快、较快、非常快。
"级数"为游戏当前等级,当分数达到当前等级的最高值,等级会提升、速度会加快。
玩家可以任意选择级别,当分数到达晋级分数(当前等级与下一级的分数差)后自动晋级,分数继续累加。
游戏结束时,如果得分进入前5名,英雄榜将记录你的姓名、分数,并为你排名。
2.2游戏功能性需求
功能性需求如下:
随机给出不同的形状(长条、Z型、反Z型、田型、7型、反7型、T型)下落填充给定区域,若填满一条则消掉,记分。
游戏可以设置难度,难度由方块的下落速度决定,难度越大方块下落的速度越快。
若方块填满给定区域则判定为输。
功能性需求表
功能
简介
旋转
旋转砖块
绘制砖块
在指定画板上绘制砖块
擦除矩形
指定画板上擦除矩形
右移动
右移砖块
左移动
左移砖块
丢下砖块
丢下砖块
计分
根据用户消行计分
作为玩家,玩家可以控制难度,查看帮助等。
对于操作性需求如下:
1.玩家可以自己控制方块下落速度。
2.玩家可以自己控制游戏难度。
3.玩家可以查看游戏积分。
4.对本游戏有帮助说明和作者介绍等。
2.3游戏界面需求
主界面需求分析主要包括界面的显示,快捷键的使用。
首先,根据游戏本身的需要,应该在游戏界面里设置三个选项,分别为游戏设置、控制和帮助,在“游戏设置”里应该同时设置速度快慢、游戏背景颜色、砖块颜色、分数查询和退出系统五个选项,游戏速度的快慢分较慢、慢、快、较快、非常快,以便于玩家根据个人对这个游戏的掌握程度的不同设置不同的游戏级别。
颜色的设置则为用户实现个性化的设置。
而在“控制”里包括游戏的开始、退出、暂停、重新开始,方便用户控制此游戏。
在“帮助”的菜单项里应该有对游戏的文字描述和设计者的一些情况,这样可以极大方便从来没玩过此游戏的玩家。
如果玩家对游戏规则有任何不理解,在这里可以找到相应的用户帮助。
其次,我们为了方便玩家还应该为这个游戏增加了一个放置常用功能的快捷键,以便用户可以通过鼠标点击而直接对相应的选项功能进行实现。
这些常用功能选项可以分别是游戏的“开始”、“暂停”、“结束”、“设置”,这样就简化了用户的操作。
最后,用户界面有提示显示和分数显示。
让方块在一定区域内运动和变形,该区域用一种颜色表明,即用一种颜色作为背景。
整体界面分为三部分:
最侧半部分用来存放俄罗斯方块,是游戏的活动区,用户操作的图形变化在这个主界面去区完成。
右侧中部显示下一次要产生的俄罗斯方块形状,以便用户预先知道,增加游戏的可玩性,右侧上用来显示用户的分数及当前等级。
方块形状设计,绘制七种常见的基本图形,各个方块要实现它的变形为了使游戏更加美观,在绘制方块的过程中不采取默认的绘制方式,而是用处理过得图片效果,让组成的方块更加美观,增加游戏的可玩性。
2.4算法分析
定义方块的数据结构
对于方块在某一瞬间位置的标示,我们采用一个4*4小数组标示出来,即用4个存储单位空间存储当前下坠物的每一个子块位置,也就是说,用四个存储单位空间存储当前下坠物的每一个子块位置来对整个下坠物见的位置进行标识,而每个存储空间的大小就是一个点的坐标(x,y),而每个方块按照从左到右的方式进行编号,并且在编号过程中对于同一列的方块实行自上而下的编号。
方块的表示方法,即用四个小方块的坐标设定:
其中一个是原点,坐标为(0,0),右侧则为(1,0),下面方块坐标即为(0,1),依次类推。
如上为程序中定义的各种方块的数据结构定义。
2.5俄罗斯方块流程图
N
Y
Y
N
N
Y
图2.1俄罗斯方块主流程图
如图2.1所示是俄罗斯方块的处理流程,从开始判断是否到达底部,到达则做消行操作,然后生成下一个下坠物,将新的下坠物代替旧的下一个下坠物,将旧的下坠物最为当前的下坠物,下到底部判断是否做消行操作,然后判断游戏是否结束。
未结束则继续新一轮方块产生,若方块到底顶部,占满空间则游戏结束。
3、技术原理
3.1编程语言
C#是一种编程语言,它是为生成在.NETFramework上运行的多种应用程序而设计的。
C#简单、功能强大、类型安全,而且是面向对象的[3]。
C#凭借它的许多创新,在保持C样式语言的表示形式和优美的同时,实现了应用程序的快速开发。
VisualStudio支持C#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器以及其他工具实现的。
通过.NETFramework类库,可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著加快开发速度与减少开发周期[4]。
3.2面向对象
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。
如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域[5]。
面向对象的基本概念:
1.对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
2.对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
3.类。
具有相同或相似性质的对象的抽象就是类。
因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象[6]。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
4.类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。
通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
(1)一般——具体结构称为分类结构,也可以说是“或”关系,或者是“isa”关系。
(2)整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“hasa”关系。
5.消息和方法。
对象之间进行通信的结构叫做消息。
在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。
发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。
一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
面向对象的特征:
1.对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。
在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
2.分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。
一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。
任何类的划分都是主观的,但必须与具体的应用有关。
3.继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。
采用继承性,提供了类的规范的等级结构。
通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。
4.多态性
多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。
不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
多态性允许每个对象以适合自身的方式去响应共同的消息[7]。
多态性增强了软件的灵活性和重用性。
面向对象的要素:
1.抽象。
抽象是指强调实体的本质、内在的属性。
在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。
使用抽象可以尽可能避免过早考虑一些细节。
类实现了对象的数据(即状态)和行为的抽象。
2.封装性(信息隐藏)。
封装性是保证软件部件具有优良的模块性的基础。
面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。
对象是封装的最基本单位。
封装防止了程序相互依赖性而带来的变动影响。
面向对象的封装比传统语言的封装更为清晰、更为有力。
3.共享性
面向对象技术在不同级别上促进了共享
同一类中的共享。
同一类中的对象有着相同数据结构。
这些对象之间是结构、行为特征的共享关系。
在同一应用中共享。
在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。
使用继承来实现代码的共享,这也是面向对象的主要优点之一。
在不同应用中共享。
面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。
通过类库这种机制和结构来实现不同应用中的信息共享[8]。
4.强调对象结构而不是程序结构
3.3GDI+
色彩鲜艳漂亮的高品质图像,一个个形象生动的Windows图标,高速运动、活灵活现的三维动画,这些无一不显示出程序设计者的艺术才华。
在程序设计中,图像处理已经成为每个程序员的必修课[9]。
在VC中编程显示一幅位图,下列步骤是不可缺少的:
装入位图、获得位图的大小信息、启用设备环境、位传输等,所需的程序代码一般比较冗长而且复杂。
如果想将装入的位图另存为其他格式的图像文件,代码就更长了。
这一切都是因为GDI本身的局限性造成的。
GDI+技术使程序员不必了解每种图像格式的具体含义,照样可以写出多格式图像浏览或转换程序。
和传统的GDI不同,GDI+中引入了对COM(组件对象模型)技术的支持,通过COM技术,GDI+简化了对图像文件的访问(打开、保存)。
它是通过调用COM组件来实现的,GDI+扮演的只是指挥者,而非操作员。
对于图像文件,GDI+所关心的不是图像文件的文件头信息,不论要打开的文件格式是什么类型,GDI+首先要做的是在注册表中查看该图像格式的编码(或解码)信息是否已经注册(HKEY_CLASSES_ROOT\MIME\Database\Content Type)。
如果已经注册,就通过该编码信息调用COM组件,就这么简单。
有了GDI+之后,只需简单地创建一个图形对象(Graphics object),然后直接调用该对象的方法(methods)进行绘图即可。
图形对象是GDI+中的核心,正如DC之于GDI那样。
图形对象和DC有许多相似的地方,在使用上遵循着相同的使用规则,但是两者在本质上已经有很大的区别[10]。
一个是基于句柄的GDI,一个是基于组件对象模型的GDI+。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 俄罗斯方块 设计 毕业论文