首页 俄罗斯方块游戏设计报告

俄罗斯方块游戏设计报告

举报
开通vip

俄罗斯方块游戏设计报告.PAGE/NUMPAGESword格式C语言课程设计报告设计题目:俄罗斯方块游戏设计院系:班  级:学号:姓名:指导教师:设计地点:开课时间:学生姓名成绩评语:指导教师〔签名年月日目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc267569177"1.设计目的和任务PAGEREF_Toc267569177\h-1-HYPERLINK\l"_Toc267569178"1.1目的:PAGEREF_Toc267569178\h-1-HYPERLINK\l"_...

俄罗斯方块游戏设计报告
.PAGE/NUMPAGESword格式C语言课程设计报告设计 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目:俄罗斯方块游戏设计院系:班  级:学号:姓名:指导教师:设计地点:开课时间:学生姓名成绩评语:指导教师〔签名年月日目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc267569177"1.设计目的和任务PAGEREF_Toc267569177\h-1-HYPERLINK\l"_Toc267569178"1.1目的:PAGEREF_Toc267569178\h-1-HYPERLINK\l"_Toc267569179"1.2任务:PAGEREF_Toc267569179\h-1-HYPERLINK\l"_Toc267569180"2.开发环境PAGEREF_Toc267569180\h-1-HYPERLINK\l"_Toc267569181"2.1硬件环境:PAGEREF_Toc267569181\h-1-HYPERLINK\l"_Toc267569182"2.2软件环境:PAGEREF_Toc267569182\h-1-HYPERLINK\l"_Toc267569183"3.设计题目PAGEREF_Toc267569183\h-2-HYPERLINK\l"_Toc267569184"3.1题目名称:PAGEREF_Toc267569184\h-2-HYPERLINK\l"_Toc267569185"3.2题目详细描述:PAGEREF_Toc267569185\h-2-HYPERLINK\l"_Toc267569186"3.3功能要求:PAGEREF_Toc267569186\h-2-HYPERLINK\l"_Toc267569187"4.相关技术以及 知识点 高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载 PAGEREF_Toc267569187\h-3-HYPERLINK\l"_Toc267569188"4.1编写Block类:PAGEREF_Toc267569188\h-3-HYPERLINK\l"_Toc267569189"4.2PathGradientBrush类:PAGEREF_Toc267569189\h-3-HYPERLINK\l"_Toc267569190"4.3Random类:PAGEREF_Toc267569190\h-3-HYPERLINK\l"_Toc267569191"4.4GDI图形处理:PAGEREF_Toc267569191\h-3-HYPERLINK\l"_Toc267569192"5.设计与实现PAGEREF_Toc267569192\h-4-HYPERLINK\l"_Toc267569193"5.1设计 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图PAGEREF_Toc267569193\h-4-HYPERLINK\l"_Toc267569194"5.2游戏主体界面PAGEREF_Toc267569194\h-4-HYPERLINK\l"_Toc267569195"5.3游戏图形界面PAGEREF_Toc267569195\h-11-HYPERLINK\l"_Toc267569196"5.4图形的移动与消行PAGEREF_Toc267569196\h-13-HYPERLINK\l"_Toc267569197"5.5得分的实现PAGEREF_Toc267569197\h-15-HYPERLINK\l"_Toc267569198"6. 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf PAGEREF_Toc267569198\h-16-HYPERLINK\l"_Toc267569199"7.参考资料PAGEREF_Toc267569199\h-16-.word格式1.设计目的和任务1.1目的:在现今电子信息高速发展的时代,电子游戏已深入人们的日常生活,成为老少皆宜的娱乐方式。俄罗斯方块,是一款风靡全球的游戏,最初是由苏联人制作的,规则简单,容易上手,且游戏过程变化无穷,可以让玩家充分感受游戏中的乐趣。在游戏设计方面,俄罗斯方块是游戏编程的入门项目,因为它可以检验编辑人员对开发语言、环境和基本数据结构知识熟练程度。1.2任务:使用C#语言编写一个俄罗斯方块游戏系统,要求程序运行后有一个图形用户界面,并具备下面几个功能:<1>实现各种方块的生产,包括形状和颜色等信息;<2>实现各个方块的上下左右移动和旋转的功能;<3>实现消行的功能;<4>实现开始,暂停,结束等功能。2.开发环境2.1硬件环境:服务器CPU:PIII500以上,内存:256M客户机CPU:P200MMX以上,内存:32M以上2.2软件环境:VisualStudio2005.net2.0以上3.设计题目3.1题目名称:俄罗斯方块游戏系统3.2题目详细描述:使用C#语言编写一个俄罗斯方块游戏系统,要求程序运行后有一个图形用户界面,实现各种方块的生产,包括形状和颜色等信息,完成左右下旋转的功能,在消行的同时分数加1,在点击暂停或者按下空格的时候暂停或开始游戏,最后结束游戏。3.3功能要求:功能<1>实现各种方块的生产,包括形状和颜色等信息;<2>实现各个方块的上下左右移动和旋转的功能;<3>实现消行的功能;<4>实现时间和得分的统计功能;<5>实现开始,暂停,结束等功能;要求<1>编写程序要严格按照C#编程 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 进行代码编写。<2>必须按照个体软件的过程,编写有关的文档。<3>按照老师的要求,每个人必须独立完成。<4>按照实训的时间安排进行实训,实训结束后提交有关的表格与文档4.相关技术以及知识点4.1编写Block类:在游戏项目规范说明书所创建的类图中定义了Block类,现在可以把它编写为最终的类接口形式,包括属性的数据类型以及方法所使用参数的数据类型。每个确定的方块都与正方形的某种特定排列方式相对应,因此可以考虑Block类的3个新成员:BlockType属性、方块类型的枚举集合、构造函数<用以在期望的位置、使用期望的色彩创建每个正方形>。为了给玩家一个清楚的视觉提示,每种类型的方块颜色应该是固定的,因此创建一个数组来保存每种类型方块的前景色和背景色是一种较好的想法。4.2PathGradientBrush类:封装Brush对象,它通过渐变填充GraphicsPath对象的内部。彩色渐变是从路径的中点到路径的外边界边缘的平滑的彩色渐变。混合因子、位置和样式影响渐变起始和结束的位置,并且影响渐变变化的速度。路径渐变画笔不遵循用于执行绘制操作的Graphics对象的SmoothingMode属性。无论是否用平滑模式,用PathGradientBrush对象填充的区域都以同样的方式呈现。4.3Random类:伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了。Random类的当前实现基于DonaldE.Knuth的减法随机数生成器算法。随机数的生成是从种子值开始。如果反复使用同一个种子,就会生成相同的数字系列。产生不同序列的一种方法是使种子值与时间相关,从而对于Random的每个新实例,都会产生不同的系列。默认情况下,Random类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的计时周期数采用Int32值。但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续创建不同的Random对象,就会创建生成相同随机数序列的随机数生成器。通过创建单个而不是多个Random对象可以避免此问题。若要提高性能,请创建一个随时间推移能生成多个随机数的Random对象,而不要反复新建会生成同一个随机数的Random对象。4.4GDI图形处理:GDI+提供了一个抽象层,隐藏了不同视频卡之间的区别,这样就可以调用WindowsAPI函数完成指定的任务了,GDI还在内部指出在运行特定的代码时,如果让客户机的视频卡完成要绘制的图形。GDI还可以完成其他任务。大多数计算机都有多个显示设备---监视器、打印机。GDI成功的使应用程序所使用的打印机看起来与屏幕一样。如果要打印某些东西,而不是显示他们,只需告诉系统输出设备是打印机,再用相同的方式调用相同的WindowsAPI函数可以。5.设计与实现5.1设计流程图5.2游戏主体界面主界面关键部分代码:namespace俄罗斯方块{publicpartialclassForm1:Form{publicForm1<>{InitializeComponent<>;}staticpublicint[,]mainField;staticpublicintrow=20;//数组mainField[,]的行staticpublicintline=15;//数组mainField[,]的列privateBlockcurrentBlock;//主界面中活动的方块privateBlocknextBlock;//副界面中的方块privateintlevel=1;privateintscore=0;//菜单栏中NewGameprivatevoidmenuItemNew_Click{NewGame<>;}//菜单栏中Start,在暂停之后使用,继续进行游戏privatevoidmenuItemStart_Click{timerInterval.Start<>;menuItemStart.Enabled=false;menuItemPause.Enabled=true;btnPause.Text="Pause";}//菜单栏中Pause,用于暂停游戏privatevoidmenuItemPause_Click{timerInterval.Stop<>;menuItemStart.Enabled=true;menuItemPause.Enabled=false;btnPause.Text="Start";}//菜单栏中Exit,用于推出游戏privatevoidmenuItemExit_Click{this.Close<>;Application.Exit<>;}//菜单栏中beginnermodelprivatevoidmenuItemBeginer_Click{NewGame<>;level=1;timerInterval.Interval=500/level;labeLevelVisual.Text=Convert.ToString;}//菜单栏中normalmodelprivatevoidmenuItemNormal_Click{NewGame<>;level=2;timerInterval.Interval=500/level;labeLevelVisual.Text=Convert.ToString;}//菜单栏中insanemodelprivatevoidmenuItemInsane_Click{NewGame<>;level=3;timerInterval.Interval=500/level;labeLevelVisual.Text=Convert.ToString;}privatevoidmenuItemOnMusic_Click{}privatevoidmenuItemOffMusic_Click{}//菜单栏中的config选项privatevoidmenuItemConfig_Click{if>{timerInterval.Stop<>;MessageBox.Show<"Left:Arrow<←>\n\nRight:Arrow<<→>\n\nDown:Arrow<↓>\n\nRotate:Arrow<↑>">;timerInterval.Start<>;}elseMessageBox.Show<"Left:Arrow<←>\n\nRight:Arrow<<→>\n\nDown:Arrow<↓>\n\nRotate:Arrow<↑>">;}//菜单栏中的version选项privatevoidpicBoxMainField_Click{//picBoxMainField.Focus<>;}//focusprivatevoidpicBoxMainField_Paint{//若没有此句,键盘焦点不能移到picBoxMainField中picBoxMainField.Focus<>;}privatevoidlabeLevelVisual_Click{}privatevoidlabScoreVisual_Click{}//主界面中的Pause按钮privatevoidbtnPause_Click{//按钮btnPause点击Pause后显示Startif{timerInterval.Stop<>;btnPause.Text="Start";menuItemPause.Enabled=false;menuItemStart.Enabled=true;}//按钮btnPause点击Start后显示Pauseelseif{timerInterval.Start<>;btnPause.Text="Pause";menuItemPause.Enabled=true;menuItemStart.Enabled=false;}}//主界面中的NewGame按钮privatevoidbtnNewGame_Click{NewGame<>;}//主界面中的Exit按钮privatevoidbtnExit_Click{this.Close<>;Application.Exit<>;}//NullprivatevoidForm1_Load{}//NullprivatevoidForm1_KeyDown{}//显示newGame,这里是必须的privatevoidForm1_Shown{NewGame<>;}//新游戏privatevoidNewGame<>{mainField=newint[row,line];//申请一个新的数组,存储整个界面方块信息for{for{mainField[i,j]=0;}}level=1;//游戏下落速度等级score=0;//消去行数timerInterval.Interval=500/level;//时间间隔随着等级增加而减少labeLevelVisual.Text=level.ToString<>;//将等级显示在label上labScoreVisual.Text=score.ToString<>;//将分数显示再label上menuItemNew.Enabled=false;//菜单按钮newgame不能点击menuItemPause.Enabled=true;//菜单按钮Pause可以点击btnPause.Text="Pause";btnPause.Enabled=true;//主界面按钮pause可以点击timerInterval.Start<>;//计时器开始计时this.Refresh<>;//刷新界面currentBlock=newBlock<>;currentBlock.MoveToCenterScreen<>;//为了美观,将方块出现的位置移动到中间do{nextBlock=newBlock<>;}while;//防止主界面中与副界面中出现的block相同//先后绘制副主界面中的blocknextBlock.DrawBlock>;currentBlock.DrawBlock>;}5.3游戏图形界面一共七个图形图形部分设计代码〔此类代码太多,文档中只列举其中一个privateclassBlock{privateBrick[,]Shape;privatePointleft;privatePointright;privatePointtop;privatePointbottom;privateinttype;publicintType{get{returntype;}set{type=value;}}publicBlock<>{Shape=newBrick[4,4];for{for{Shape[i,j]=newBrick<>;}}RandomRandType=newRandom<>;type=RandType.Next<1,20>;switch{case1://■□□□//■□□□//■□□□//■□□□Shape[0,0].X=0;Shape[0,0].Y=0;for//for//{Shape[i,j].X=Shape[0,0].X+j;Shape[i,j].Y=Shape[0,0].Y+i;}Shape[0,0].Filled=true;Shape[1,0].Filled=true;Shape[2,0].Filled=true;Shape[3,0].Filled=true;left.X=Shape[0,0].X;left.Y=Shape[0,0].Y;right.X=Shape[0,0].X;right.Y=Shape[0,0].Y;bottom.X=Shape[3,0].X;bottom.Y=Shape[3,0].Y;break;5.4图形的移动与消行移动方面代码示例://判断是否能向下移动publicboolCanMoveDown<>{boolcanDown=true;if=19>canDown=false;if{for=0;i-->{for=0;j-->{if{ifcanDown=false;}}}}returncanDown;}消行方面代码示例:privatevoidClearLine<>{intlines=0;//同时消失的行数intbricks;//同一行中的砖块brick数for=0;i-->{bricks=0;for=0;j-->{ifbricks++;}if//如果同一行中的砖块brick个数达到了行数line,即该行满行{lines++;for=0;j-->{mainField[i,j]=0;//将该行全部赋值为0,即消除该行}for0;m-->{for=0;j-->{mainField[m,j]=mainField[m-1,j];//将该行以上各行,均向下一行移动一行,这里用赋值完成}}i++;//检查下一行}}5.5得分的实现if//如果同时消除1行,得1分score+=1;if//如果同时消除2行,得3分score+=3;if//如果同时消除3行,得5分score+=5;if//如果同时消除4行,得10分score+=10;labScoreVisual.Text=score.ToString<>;//主界面label显示分数scoreif20&&level==1>//score大于20分,进去第二个level{level++;timerInterval.Interval=500/level;labeLevelVisual.Text=level.ToString<>;}if35&&level==2>//score大于35分,进入第三个level{level++;timerInterval.Interval=500/level;labeLevelVisual.Text=level.ToString<>;}}6.总结这次C#实训是我人生中最大的收获,这次实训,让我受益匪浅。经过一周多的实训,我学到了很多知识,这为我接下来的学习做好铺垫。在这一周里我通过问老师问同学,逐步完成了俄罗斯方块的设计。现在我在一步一步的学习,制作出了俄罗斯方块,心中有一种自豪感。这是我这一周来得到的成果。俄罗斯方块的制作的完成,让我学到了很多。在这个实训中我在编写代码的时候常常出错,经过同学的指教,才有了现在程序的正常运行。在编代码的过程中我遇到了很多小麻烦,有些小问题弄得我焦皮烂愕。实训中,有同学帮我把我的代码一遍遍的看了一下,帮我指出好多错误。在这之后我也仔细认真的查过一边,并把一些代码记住,增加了自己的知识。现在才感觉自己原来也是能做好的。在实训中我遇到很多问题:比如代码忘记了或者有些代码不认识。我都会去翻书,或者去问同学。在有些属性我不会用现在通过自己的摸索和同学的指教,我了解了很多、增加了我的知识。在编程中经常会遇到崩溃的问题,这些我都重新弄了一下。增加了对代码的熟悉度这次实训让我受益匪浅,我学到了很多知识。这次实训让我学会了在以后的编程中要更加仔细更加认真7.参考资料《VisualC#2005程序设计教程》机械工业出版社《VisualC#时尚编程百例》机械工业出版社豆丁文档,docin.com
本文档为【俄罗斯方块游戏设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
爱分享
通信工程;电信工程;电子工程;光线传输系统;移动通信;数字传输设备;信息网络及传真;工程监理;弱电设计安装;设备安装;
格式:doc
大小:122KB
软件:Word
页数:14
分类:成人教育
上传时间:2022-03-04
浏览量:0