简单俄罗斯方块游戏设计课程设计论文.docx
- 文档编号:26877525
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:60
- 大小:94.73KB
简单俄罗斯方块游戏设计课程设计论文.docx
《简单俄罗斯方块游戏设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《简单俄罗斯方块游戏设计课程设计论文.docx(60页珍藏版)》请在冰豆网上搜索。
简单俄罗斯方块游戏设计课程设计论文
课程编号:
课程小论文
教学院
计算机学院
课程名称
Java应用技术
题目
简单俄罗斯方块游戏设计
专业
班级
学号
姓名
指导教师
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
□优□良□中□及格□不及格
3、学生综合运用所学知识和专业技能分析和解决问题的能力
□优□良□中□及格□不及格
4、研究方法的科学性;技术线路的可行性;设计方案的合理性
□优□良□中□及格□不及格
5、完成毕业论文(设计)期间的出勤情况
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
二、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
评阅教师:
(签名)单位:
(盖章)
年月日
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
□优□良□中□及格□不及格
2、对答辩问题的反应、理解、表达情况
□优□良□中□及格□不及格
3、学生答辩过程中的精神状态
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
评定成绩:
□优□良□中□及格□不及格
教研室主任(或答辩小组组长):
(签名)
年月日
教学系意见:
系主任:
(签名)
年月日
一问题分析和任务定义
1.问题分析
游戏这个名称一直就存在于每个人的日常生活中,如猜拳游戏、猜谜游戏、大地游戏、球类游戏等,林林总总,不胜枚举,甚至于有些流行歌曲把人生也比喻为游戏,好比“一场游戏一场梦”。
因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色。
“游戏”,最简单的定义,就是一种供人们娱乐休闲的快乐元素。
从更专业的角度形容,“游戏”是具有特定行为模式、规则条件、身心娱乐及输赢的一种行为表现。
而俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与经济价值可以说是游戏史上的一件大事。
这款游戏最是由苏联的游戏AlexPajitnow制作的,它看似简单却变化无穷,令人着迷,相信大多数人都还记得为它的规则简单,容易上手,且游戏过程变化无穷。
而在“联众俄罗斯方块”中,游戏人既能感受到游戏中的乐趣,也能提供一个展现自己高超技艺的场所,究其历史,俄罗斯方块最早还是出现在PC机上,无数人进入游戏编程的世界都是从编写俄罗斯方块游戏开始的,因为这是检验一个人对开发语言,环境和基本数据结构知识熟练程度的便捷途径。
于此同时俄罗斯方块是一款我们大家小时候经常玩的游戏,非常的具有趣味,代表了我们的一段童年时光。
此次,我所选的课题就是简单俄罗斯方块的设计,用来追忆它陪我度过的一段童年时光。
2.课程报告所用软件
Eclipse最初是由IBM公司开发的替代商业软件VisualAgeforJava的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(EclipseFoundation)管理。
2003年,Eclipse3.0选择OSGi服务平台规范为运行时架构。
2007年6月,稳定版3.3发布;2008年6月发布代号为Ganymede的3.4版;2009年6月发布代号为Galileo的3.5版;2010年6月发布代号为Helios的3.6版;2011年6月发布代号为Indigo的3.7版;2012年6月发布代号为Juno的4.2版;2013年6月发布代号为Kepler的4.3版;2014年6月发布代号为Luna的4.4版;2015年6月项目发布代号为Mars的4.5版。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
Eclipse可以作为Java集成开发环境(IDE),但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),它允许他们构建与Eclipse环境无缝集成的工具。
Exclipse的平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
3.设计目的
综合运用在校期间所学理论知识和技能,设计开发俄罗斯方块,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力,为将来实际工作打下坚实的基础。
3.任务定义
通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。
利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。
开发过程遵循软件工程规范,可采用结构化或面向对象分析设计方法。
主要实现windows的GUI程序开发,对游戏中的图形图像进行键盘控制。
游戏者可以通过上下左右键来对游戏进行操作。
二逻辑设计
1.游戏流程图
图1
2.游戏功能叙述
1、当程序运行时,用户进入主界面,进行游戏。
游戏具有开始游戏,暂停游戏,提高或降低级数以及退出游戏的功能。
2、游戏开始,游戏区域上方不断地出现预定义形状的下坠物件。
3、下坠物件可以通过旋转改变其显示形态,并且不断地往下坠,直到它接触到游戏区域底部或其他之前已经垒叠起的下坠物件。
当一个下坠物件到达底部后,其位置则确定下来并占有该空间的位置区域。
4、当游戏区域的某一行被下坠物件完全填充,则消除该行的所有下坠物,垒在其上面的物件将掉下代替该行空间。
5、游戏的结束是以下坠物件的顶部到达游戏区域的顶部作为判断依据,表示装满溢出。
并且在某一瞬间,下一个方块的形态在游戏区域的右上方有预先提示,同时每抵消一行空间积分自增。
三详细设计
1.界面设计
首先进行游戏区域的设计,一般为12*22或者10*22,在这里我设计的是12*22。
主要的游戏功能都在游戏区域显示,比如方块的随机选择,画布的背景显示等等。
其次是系统功能显示区域,这里显示了当前所玩游戏的等级,右方可以选择不同的游戏级别,一共有1、2、3、4、5五种游戏级别的选择;下方是游戏画布背景的选择,一共有浅绿、浅黄、黑色三种背景颜色的选择;最下方有开始游戏、暂停游戏、结束游戏和退出游戏四中功能选项。
2.游戏功能设计
在无人操作时,游戏开始后会随机产生一个下坠物,先显示在界面右上角的显示区域,然后转到游戏区域,右上角又随机产生一个新的下坠物,当该下坠物下落到底后,新的下坠物再次进入游戏区域,如此循环,直到游戏结束/暂停,这就是游戏的正常工作。
上述过程是在无人操作时游戏自动运行的,当用户进行一定的操作交互的时候,运行程序可以根据用户的操作指示进行当前下坠物的控制。
而这些操作都是响应相关的功能键而执行的,所以这里可以把它看成一种“中断”的操作。
在中断过程中,可以通过键盘包括按某些键进行操作。
为了便于用户操作,用户可以自主选择操作键,但他们的作用不变。
但还是应该设置默认键来方便操作。
例如:
光标向上键,光标向下键,光标向左键,光标向右键。
(1)按光标向上键
此事件产生下坠物旋转操作,下坠物并非任何情况都能旋转,如果旋转后与小方格矩阵显示的下坠物有冲突或超出边界时,均不能发生旋转。
因此首先要判断是否有足够的空间进行旋转,然后选择是否旋转。
(2)按光标向下键
此事件产生下坠物加速下落操作,如果下坠物已经到达游戏区域底部或者已经有其他方块遮挡,则下坠物停止下降。
(3)按光标向左键
此事件产生下落下坠物左移操作。
首先要判断此下坠物是否能够发生左移,当越界或被其他显示下坠物阻挡时,则不能左移。
(4)按光标向右键
此事件产生下落下坠物右移操作。
首先要判断此下坠物是否能够发生右移,当越界或被其他显示下坠物阻挡时,则不能右移。
3.方块的定义
在此,我用type类来进行方块的类型定义,一共定义了长条、直角左、直角右、直角中、正方形五中方块类型
privatefinalinttypes[][][]={//游戏方块
{{-1,0},{0,0},{1,0},{2,0}},//长条
{{0,-1},{0,0},{0,1},{0,2}},
{{-1,0},{0,0},{1,0},{1,1}},//直角(右)
{{0,1},{0,0},{0,-1},{1,-1}},
{{1,0},{0,0},{-1,0},{-1,-1}},
{{0,-1},{0,0},{0,1},{-1,1}},
{{-1,0},{0,0},{0,1},{1,0}},//直角(中)
{{0,1},{0,0},{1,0},{0,-1}},
{{1,0},{0,0},{0,-1},{-1,0}},
{{0,-1},{0,0},{-1,0},{0,1}},
{{-1,1},{-1,0},{0,0},{1,0}},//直接(左)
{{1,1},{0,1},{0,0},{0,-1}},
{{1,-1},{1,0},{0,0},{-1,0}},
{{-1,-1},{0,-1},{0,0},{0,1}},
{{0,-1},{0,0},{1,0},{1,1}},
{{-1,0},{0,0},{0,-1},{1,-1}},
{{0,1},{0,0},{1,0},{1,-1}},
{{1,0},{0,0},{0,-1},{-1,-1}},
{{0,0},{0,1},{1,0},{1,1}}//正方形
};
4.方块的随机出现
我用makenewblock()函数来实现方块的随机出现
publicvoidmakenewblock()//随机出现方块
{
aa=(int)(Math.random()*100%7+1);
ic=aa*10+1;
switch(aa)
{
case1:
block_type=0;
break;
case2:
block_type=2;
break;
case3:
block_type=6;
break;
case4:
block_type=10;
break;
case5:
block_type=14;
break;
case6:
block_type=16;
break;
case7:
block_type=18;
break;
}
block_x=1;
block_y=sp_width/2;
for(inti=0;i<4;i++)
{
block_box[i][0]=block_x-types[block_type][i][1];
block_box[i][1]=block_y+types[block_type][i][0];
}
}
5.方块的旋转
publicvoidturnright()
{
int[][]block_box_temp=newint[4][2];
intic_temp=ic;
intblock_type_temp=block_type;
intid=ic%10;
for(inti=0;i<4;i++)
{
block_box_temp[i][0]=block_box[i][0];
block_box_temp[i][1]=block_box[i][1];
}
if(aa==7)
return;
elseif(aa==1||aa==5||aa==6)
{
if(id==2)
{
block_type--;
ic--;
}
else
{
block_type++;
ic++;
}
}
else
{
if(id==4)
{
block_type=block_type-3;
ic=ic-3;
}
else
{
block_type++;
ic++;
}
}
for(inti=0;i<4;i++)
{
block_box[i][0]=block_x-types[block_type][i][1];
block_box[i][1]=block_y+types[block_type][i][0];
}
if(Iscanmoveto()==false)
{
ic=ic_temp;
block_type=block_type_temp;
for(inti=0;i<4;i++)
{
block_box[i][0]=block_box_temp[i][0];
block_box[i][1]=block_box_temp[i][1];
}
}
}
四程序编码
程序主要代码
publicclassBlockGame
{
privateintaa=0;
privateintic=0;
privatefinalintsp_width=10;//游戏界面宽格
privatefinalintsp_height=20;//游戏界面高格
privatefinalinttypes[][][]={//游戏方块
{{-1,0},{0,0},{1,0},{2,0}},//长条
{{0,-1},{0,0},{0,1},{0,2}},
{{-1,0},{0,0},{1,0},{1,1}},//直角(右)
{{0,1},{0,0},{0,-1},{1,-1}},
{{1,0},{0,0},{-1,0},{-1,-1}},
{{0,-1},{0,0},{0,1},{-1,1}},
{{-1,0},{0,0},{0,1},{1,0}},//直角(中)
{{0,1},{0,0},{1,0},{0,-1}},
{{1,0},{0,0},{0,-1},{-1,0}},
{{0,-1},{0,0},{-1,0},{0,1}},
{{-1,1},{-1,0},{0,0},{1,0}},//直接(左)
{{1,1},{0,1},{0,0},{0,-1}},
{{1,-1},{1,0},{0,0},{-1,0}},
{{-1,-1},{0,-1},{0,0},{0,1}},
{{0,-1},{0,0},{1,0},{1,1}},
{{-1,0},{0,0},{0,-1},{1,-1}},
{{0,1},{0,0},{1,0},{1,-1}},
{{1,0},{0,0},{0,-1},{-1,-1}},
{{0,0},{0,1},{1,0},{1,1}}//正方形
};
privateint[][]block_box=newint[4][2];//四个方块坐标
privateint[][]block_box_tt=newint[4][2];
privateintblock_x=0,block_y=0;//游戏方块在游戏界面中的坐标
privateintblock_type=0;//方块类别
privateint[][]game_space=newint[20][10];//空间数据
privateintmovetype=0;
privateintscroe=0;
privateintspeed=5;
publicBlockGame()
{
clearspace();
makenewblock();
}
publicvoidclearspace()//初始化空间数据
{
for(inti=0;i for(intj=0;j game_space[i][j]=0; } publicvoidmakenewblock()//随机出现方块 { aa=(int)(Math.random()*100%7+1); ic=aa*10+1; switch(aa) { case1: block_type=0; break; case2: block_type=2; break; case3: block_type=6; break; case4: block_type=10; break; case5: block_type=14; break; case6: block_type=16; break; case7: block_type=18;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 俄罗斯方块 游戏 设计 课程设计 论文