java课程设计 俄罗斯方块

天山雪 贡献于2012-06-12

作者 jsj  创建于2011-07-06 15:00:00   修改者jsj  修改于2011-07-07 01:10:00字数7415

文档摘要:java课程设计 俄罗斯方块
关键词:

 Java课程设计报告 2010 / 2011 学年 第 二 学期 项目名称: 俄罗斯方块游戏 项目负责人: 李俊杰 学号: 09030317 同 组 者: 田 俊 学号: 09030325 同 组 者: 殷崧健 学号: 09030335 指导教师: 费贤举 班级: 09软件 课程设计时间:2011年6月21日-2011年7月7日 课程设计地点: 秋白楼B705 常州工学院计算机信息工程学院 2011年7月7日 目 录 1.系统概述………………………………3 2.项目计划书以及小组人员分工………4 3.系统流程图……………………………5 4.系统操作界面…………………………8 5.详细设计………………………………9 6.用户手册与游戏帮助…………………18 7.测试计划………………………………20 8.改进意见………………………………22 9.课程设计心得体会……………………23 10.参考书籍及资料…………………… 24 系统概述 1. 1 现状分析 在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众认可,因此开发此游戏软件可满足人们的一些娱乐需求。 此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。 1. 2 项目要求 俄罗斯方块是一款适合大众的游戏软件,它适合不同年龄的人玩。本软件实现的基本功能如下: l 游戏区:玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况和下一个将要出现方块的提示。 l 游戏控制:玩家可以通过游戏控制功能来控制游戏开始,暂停,结束游戏,游戏难度的设置以及音效控制。 l 玩家游戏信息存储及删除:玩家的得分在前五名时,将会记录在排行榜上,同时可为玩家清空排行榜。 1. 3 系统模块结构图 依据需求分析结果,俄罗斯方块游戏可以分为三个模块:游戏区、游戏控制区、数据操作区。系统模块结构如图: 俄罗斯方块游戏 游戏区 游戏控制区 数据操作区 项目计划书以及小组人员分工 2. 1 项目开发计划书 名称 时间 工作内容 下达设计任务 1天 说明如何着手设计的方法和设计任务的解释说明。 搜集、分析资料及档案 2天 项目组在组长的组织下选题、分析,识别实体,完成《项目开发计划书》及小组人员分工。 设计 2天 完成系统层次图、用户界面设计、数据库表设计,完成《设计说明书》 程序编写和测试 7天 根据方案进行现场编程和调试 编写设计文档 2天 完成软件测试以及《用户操作手册的编写》 文档提交、答辩 1天 提交文档,进行答辩 2.2 小组人员分工表 姓名 任务分配 组长 李俊杰 游戏界面设计,游戏控制按钮功能实现,文档编写等。 组员 田俊 游戏区操作的实现,显示操作结果以及大部分游戏算法的编写。 组员 殷崧健 数据库的设计与运行,方块构造与变形,以及部分算法的编写。 系统流程图 3. 1 游戏区模块 该模块为玩家提供主题游戏功能,能够处理玩家的各种操作,为玩家提供下一个方块的提示、当前等级、当前分数的显示。该模块应包括三个字功能模块:创建游戏区、处理玩家游戏操作区、游戏显示区。模块功能树如图: 游戏区模块 创建游戏区 处理玩家游戏操作区 游戏显示区 3.2游戏控制区模块 该模块为玩家提供游戏控制功能,包括开始游戏、暂停/继续游戏、结束游戏、等级设置。玩家可自行设定游戏等级,主要提供10种级别,级别越高,游戏速度越快,难度越大。模块功能树如图: 游戏控制区模块 开始游戏 暂停/继续游戏 结束游戏 等级设置 音效开关 3.3数据操作区模块 该模块为玩家提供游戏、玩家信息存储与查询功能。包括排行榜信息录入、排行榜查询、排行榜清空、游戏帮助,四个模块。模块功能树如图: 数据操作区模块 排行榜信息录入 排行榜查询 排行榜清空 游戏帮助 3.4系统流程描述 此流程图为俄罗斯方块游戏系统流程描述。 设置初始级别 创建游戏区 游戏开局 随机选择方块类型 显示下一个方块 是否到达 顶部 显示游戏结果 是否录入数据库 输出排行榜 输入玩家姓名 方块下落一行 处理玩家操作 是否到达 底部 开始 结束 是 否 是 否 查询排行榜 清空排行榜 查看游戏帮助 查看制作团队 是 否 系统操作界面 4. 1游戏打开界面 4.2 游戏运行界面 详细设计 类一:控制面板类 (1) 类定义:class ControlPanel (2) 功能描述:界面设计应遵循简介美观方便易用的基本原则。 (3) 设计方法: 方法①:fanning方法 方法定义:public void fanning() 功能描述: 这个方法就是要保证在放大和缩小程序实现窗口大小的时候,其中的格子也会随之改变,也就是我们经常说的最大化最小化,当窗口发生变化时,方块自动调整大小与之相匹配。 方法②:reset方法 方法定义:public void reset() 功能描述:这个就是将游戏界面重置,将游戏界面回到初始状态,这个方法主要是通过将窗口中的着色小方块全部消除颜色,然后再重新去给窗口着色,即着上背景色,给玩家看上去也就是被刷新了。 (4) 设计描述: ① controlPanel面板中包含tipPanel, InfoPanel, buttonPanel子面板,分别为图形界面面板,信息面板,按钮面板 ② 图形显示面板设计为BorderLayout布局样式.其中添加tipPanel面板居中(以显示下一个俄罗斯方块样式) ③ 信息面板设计为4行1列式的GridLayout网格状布局,并且添加当前等级,显示当前等级文本域,当前分数,显示当前分数文本域 ④ 按钮面板设计为5行1列式的GridLayout网格状布局 ,并且添加开始游戏, 暂停/继续,结束,加等级,减等级五个按钮 ⑤ Bar栏中添加五个菜单按钮,分别为游戏菜单,控制菜单,排行榜菜单,音效菜单,关于菜单。 ⑥ 游戏菜单里有新游戏,退出两个选项卡,窗口样式菜单里有windows,motif,ment这3种样式选项卡,信息菜单里面有作者,帮助两个选项卡 面板设计效果图如下: 类二:画布类 (1) 类定义:class GameCanvas (2) 功能描述: 在游戏区显示方块 (3) 设计方法: 方法①:paintComponent方法 方法定义public void paintComponent(Graphics g) 功能描述;其中box就是表示预显示框,然后检查显示框中每个小格子是否需要着色,如果需要着色,则着上方块得颜色,不需要着色的则着上背景颜色,一共有16个小格子构成了一个预显示块,共需要检测16次,其实当中和实现游戏中的程序有着共同点。 方法②:removeLine方法 方法定义:public void removeLine(int row) 功能描述:这个就是实现如何将行消除的,其实就是在判断了该行该消除的时候将上面的方块都向下平移一格,这样在实现程序界面也就给玩家是消去一行的视觉效果。 类三:方块类 (1) 类定义:class RussiaBlock (2) 功能描述:七种类型方块的父类,定义了所有类型方块的共同特征和行为。 7 6 5 4 3 2 1 随机产生一个数 一字形 Z字形 反Z形 L字形 反L形 倒T形 田字型 (3) 设计方法: 方法①:run方法 方法定义:public void run() 功能描述:实现方块的运行,下落。 方法②:moveTo方法 方法定义:public synchronized boolean moveTo() 功能描述:将当前画移动到newRow/ newCol所指定的位置。 方法③:isMoveable方法 方法定义:private boolean isMoveable() 功能描述:判定当前块是否能被边界、其他方块挡住以及不能移动的情况。 方法④:turnNext方法 方法定义:public void turnNext() 功能描述:实现方块的旋转。 方法⑤:turnTo方法 方法定义:private synchronized boolean turnTo() 功能描述:将当前块变成newStyle所指定的块样式。 方法⑥:isTurnable方法 方法定义:private boolean isTurnable() 功能描述:判定当前块是否能变成newStyle所指定的块样式。 方法⑦:erase方法 方法定义:private void erase() 功能描述:将当前块从画布的对应位置移除。 方法⑧:display方法 方法定义:private void display() 功能描述:实现重画画布的时候显示当前块。 类四:主游戏类 (1) 类定义:RussiaBlocksGame (2) 功能描述: 游戏主类,负责游戏的全局控制。 (3) 设计方法: 方法①:datasort方法 方法定义:public void datasort() 功能描述:实现连接数据库,并对数据库中所有数据进行排序输出。 方法②:reportGameOver方法 方法定义:private void reportGameOver() 功能描述:实现输出游戏总分,输入用户姓名,录入数据库并显示最新排行。 方法③:datasortdelete方法 方法定义:public void datasortdelete() 功能描述:实现排行榜清空。 方法④:checkFullLine 方法 方法定义:public void checkFullLine() 功能描述: 这个是表示的清除需要消除的行的算法,只需要对行中的小方块进行判断,判断是否都已经着色,如果都着色了说明改行是要消除的,而且还需要进行加分措施,在进行多行消除的时候,可以给玩家更多的奖励,这也符合俄罗斯方块的游戏股则。 方法⑤:play方法 方法:private void play() 功能实现:实现游戏开始,同时在游戏的开始时,方块随即从顶端的任何位置落下。 方法⑥:getCurLevelScore方法 方法定义:public int getCurLevelScore() 功能描述:实现获得每个等级的分数 方法⑦:setLevel方法 方法定义:public void setLevel(int level) 功能描述:进行等级的手动调节 方法⑧:isGameOver方法 方法定义:private boolean isGameOver() 功能描述:该方法是判断游戏是否该结束了,只需要判断窗口中的最顶端那一行中是否有方块,同时也要判断最底端的是否也有,如果都有程序会自动弹出“游戏结束”的对话框,然后进行数据的记录,存入数据库,写入排行榜,可以供玩家进行参考,判断最底端的是因为,在游戏开始的时候直接结束游戏也会弹出对话框,为了避免这个问题,加一个判断对的条件,基本可以实现原来计划的功能。 方法⑨:levelUpdate 方法 方法定义:public void levelUpdate() 功能描述:这是更新等级的函数,一个是通过分数的判断,在程序中定义了一个本级得分,然后当本级得分达到一个分数的时候,就可以进入下一个等级,同时根据等级的提高,之前定义的下落速度也会提高,同时减去升级需要的分数,也就可以用作下一次升级的判断。 (4) 设计描述: ①窗体设计 窗体大小:(300,400),默认居中显示,代码如下: Dimension scrSize=Toolkit.getDefaultToolkit().getScreenSize(); setLocation((scrSize.width-getSize().width)/2,(scrSize.height-getSize().height)/2); 添加windows窗口事件: addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent event) { System.exit(0); } } ); 窗体名称为:俄罗斯方块游戏。 ②菜单设计 菜单条设计:包括游戏菜单,控制菜单,排行榜菜单,音效菜单,关于菜单。 游戏菜单:包括重新游戏,加等级,减等级,退出四个菜单项。 控制菜单:包括暂停,继续,结束三个菜单项。 排行榜菜单:包括排行榜显示,清除排行榜数据。 音效菜单:包括音效的开与音效的关。 关于菜单:包括制作人,与帮助。 以菜单项为例 gameMenu = new JMenu("游戏"); newGameItem = new JMenuItem("重新游戏"); turnHardItem = new JMenuItem("加等级"); turnEasyItem = new JMenuItem("减等级"); exitItem = new JMenuItem("退出"); gameMenu.add(newGameItem); gameMenu.add(turnHardItem); gameMenu.add(turnEasyItem); gameMenu.add(exitItem); ③添加背景音乐方法 public void Music () { String music = "background.wav"; final AudioClip clip = Applet.newAudioClip(getClass().getResource(music)); clip.play(); } 通过调用Music()来实现背景音乐播放。 类五:虚拟单个方格类类 (1) 类定义:RussiaBlocksGame (2) 功能描述:控制方格的颜色。 (3) 设计方法: 方法:setColor方法 方法定义:public void setColor() 功能描述:对有标记的方块进行着色 用户手册与游戏帮助 l 控制区:玩家在界面上可以看到开始游戏的按钮,点击该按钮,开始游戏,控制区和界面上都有暂停,继续的按钮,按下暂停则游戏暂停,并且界面上的按钮变成继续的字样,同理按下继续,游戏继续,用户界面上面还有等级的增加和降低,直接点击按钮就可以实现对等级的操作 l 游戏菜单区:新游戏:如果玩家在结束了游戏或者在游戏中向开始进行新的游戏,则可以点击该按钮,同时可以进行等级的设置,如果玩家不想继续玩得话,直接点击结束按钮结束游戏,并退出窗口。 l 控制菜单:暂停,继续,退出游戏的功能都和控制区一样的效果 l 排行榜菜单:可以查看游戏的最高分的排行榜,可以准确地定位自己分数的档次,同时也可以对排行榜进行清空,也就是排行榜中没有了数据了。 l 音效菜单:可以对游戏过程中的背景音乐和游戏中的声音进行开关,玩家用起来非常方便 l 关于菜单:该菜单包含两个模块,一个是游戏的操作的简介,方向键的左,下,右就是游戏中的操作方法,方向键上则是对图形的反转变化,空格键则是一键到底的快捷键。第二个模块则是制作人,即是该游戏的制作人的说明。 游戏规则 游戏软件随即不断的下落其中方块中的一种,玩家在方块落到底部之前将方块尽量整齐的摆放好,以便能够对满一行进行消除,玩家可以旋转,左右移动方块,以选择最佳的摆放位置和方式,也可以加快下落的速度,甚至可以直接落到底部,以便节省游戏的时间。当方块落到底部的时候,就不能进行操作的,此时会在顶部出现另一个方块。在堆放方块的时候,如果一行堆满的话,则进行消行,上面的方块自动的向下移动一行。消除一行可以得到100分,同时消除多行的时候可以进行更多的奖励,累计达到2000分的时候可以自动提高游戏的等级,当游戏到达最高等级的时候就不再进行等级的提高。同时在游戏的同时也可以听听背景音乐,放松心情。在游戏的开始和结束的时候都可以对排行榜进行访问,可以对自己的游戏水平进行一个正确的评价。 测试计划 7.1右侧按钮测试 1.点击“开始游戏” 按钮 效果:游戏开始 结果:正常 2.点击“暂停/继续” 按钮 效果:游戏根据操作能暂停与继续相互切换 结果:正常 3.点击“结束” 按钮 效果:游戏重置,屏幕重新刷新 结果正常 4.点击“加等级” 按钮 效果:游戏等级加一级,游戏界面显示出加后的等级。 结果正常 3.点击“减等级” 按钮 效果:游戏等级加一级,游戏界面显示出减后的等级。 结果正常 7. 2界面菜单选项的功能测试 1.“游戏”菜单的测试 点击“游戏” à “重新游戏” 效果:界面重置。 结果:正常 2.点击“游戏”à“加等级” 效果:游戏等级加一级,游戏界面显示出加后的等级。 结果:正常 3.点击“游戏”à“减等级” 效果:游戏等级加一级,游戏界面显示出减后的等级。 结果:正常 4. 点击“游戏”à“退出” 效果:游戏结束,关闭窗口 结果:正常 4. 点击“排行”à“查询排行榜信息”/“清除排行榜信息” 结果:正常 5. 点击“音效”à“音效开”/“音效关” 效果:背景音乐开与关 结果:正常 6. 点击“关于”à“制作人”/“帮助” 结果:窗口弹出正常 7. 3键盘事件的功能测试 1.方块移动测试 游戏过程中,点击“左、右、下”方向键 输出:方块正常移动,不会移出边界 结果:正常 2. 方块反转测试 游戏过程中,点击向上方向键 输出:方块无边界和障碍物阻挡的情况下可反转 结果:正常 7. 4方块堆砌与消行测试 1. 当方块下落到最底面或与障碍物接触时 输出:方块成功堆砌在底部 结果:正常 2. 当出现满行现象时 输出:所有满行被消除,方块依次下移 结果:正常 7. 5消行音效测试: 结果正常。 改进意见 系统中还存在一些不足之处,可以对本系统做如下修改: 1、 做进一步地功能拓展和研究,如添加FLSAH效果等。 2、 设计玩家进入游戏的界面。 3、 添加背景图片,让游戏更加生动。 4、 对软件进行更详细的测试,以保证软件的可用性和适用性。 5、 添加互联网操作,实现网络对战。 课程设计心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. Java课程设计是对我们本学期学习的一个总结,通过一个全面的课题实验来检验和巩固我们一学期来所学的知识,通过团队之间的合作,交流,切身体会软件编程的经历。 Java语言是一门强大的语言,比我们所学过的C语言有很强的功能,可以有美化的图形界面设计,可以连接数据库,解决用文件存储的繁琐过程,使得软件所产生的数据更容易管理和维护。 我们本次的课程设计运用到了线程创建运行,图形化界面,与数据库,使得课题得到合理的体现。在设计初期时,组员通过交流,讨论,定下了课题——俄罗斯方块游戏。分工之后,将整个课题分为三个部分。在编程阶段,我们发现一学期所学的知识难易填补课题所需的知识漏洞,通过参考课外书籍,网络资源,掌握了课本之外的一些技巧与知识。我们在课程设计的同时感觉到我们还欠缺很多。通过此次课程设计,我们对专业知识又有了更进一步的了解,对培养我们专业兴趣起到良好的推动作用。 课程设计在衔接之时也遇到一些问题,有一些程序BUG,经过讨论修改,完善了程序。因为是分工作业,所以相互之间的交流是十分重要的,每次进度的保存要记录,这样方便组员之间共享。因为专业水平还有不足,所以程序不算完美,有一些功能没有得到实现,这也激励着我们在以后的专业课学习中,要更加的努力,填补知识的空缺。经过三周的课程设计,俄罗斯方块游戏也可以运行,有了此次宝贵的经验,相信以后的对以后的课程设计有更大的帮助。 参考书籍及资料 1、《JAVA编程宝典》李钟尉 陈丹丹 张振坤编著,人民邮电出版社 2、《JAVA课程设计》 黄明 梁旭 周绍斌编著,电子工业出版社

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ] 4 人已下载

下载文档