11信计2012-2013(二)《Java程序设计》课程设计设计题目JAVA设置贪吃蛇游戏设计时间2013.6.23至2013.6.29学生学号20110402115所在班级11精算指导教师刘风华徐州工程学院数学与物理科学学院成绩徐州工程学院课程设计报告摘要“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。关键词Java;贪吃蛇;图形界面徐州工程学院课程设计报告目录1课程设计的目的和意义……………………………………………………………12分析与设计…………………………………………………………………………12.1需求分析………………………………………………………………………12.1.1游戏开发的可行性……………………………………………………12.1.2用户的特点……………………………………………………………12.1.3功能需求………………………………………………………………22.1.4系统环境及工具需求…………………………………………………22.2设计方案论证…………………………………………………………………22.2.1设计思路………………………………………………………………22.2.2概要设计………………………………………………………………32.2.3详细设计………………………………………………………………33系统实现及结果分析………………………………………………………………64总结与心得体会……………………………………………………………………8参考文献………………………………………………………………………………9附录:贪吃蛇算法源代码……………………………………………………………10徐州工程学院课程设计报告11.课程设计的目的和意义贪吃蛇游戏一款非常经典的游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。正是因为如此,本次课程设计的目的在于学习Java程序设计基本技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。2.分析与设计2.1需求分析2.1.1游戏开发的可行性游戏开发至今已有30多年,在这个短暂的时期里,随着硬件水平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。游戏这个名称一直就存在于每个人的日常生活中,如猜拳游戏、猜谜游戏、纸牌游戏等,林林总总,不胜枚举,甚至有些流行歌曲把人生也比喻为游戏,好比“一场游戏一场梦”。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色。徐州工程学院课程设计报告22.1.2用户的特点游戏开发成功后,最终用户为各个年龄段的人群,用户范围相当广泛。本游戏友好的用户界面,简单易学的按钮操作以及简单通俗的游戏规则,使广大的用户不需要专门进行培训,就可以立即学会如何使用。2.1.3功能需求2.1.3.1游戏主界面模块需求游戏界面主框架主要包括游戏图形区域界面、游戏开始按钮、游戏暂停按钮、关闭按钮。2.1.3.2游戏图形区域界面的需求游戏画布区主要应该包括游戏画布中贪吃蛇随机出现的位置,贪吃蛇重新出现的位置,事物随机出现的位置。2.1.3.3属性需求在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,连接速度快,以确保系统可使用性好。另外,还要求系统的可扩展性、可维护性、可移植性良好。2.1.4系统环境及工具需求本次课程设计所涉及和实现的是用Java编程语言和JBuilder开发工具开发的贪吃蛇游戏。本次设计的系统环境及工具如下:运行环境:windowsxp编程语言:Java使用工具:JBuilder20052.2.设计方案论证2.2.1设计思路贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现移动速度、暂停、重新开始等功能。(1)游戏主界面模块:游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、新生方块的预览、游戏速度控制按钮、徐州工程学院课程设计报告3暂停游戏按钮、重新开始游戏按钮以及游戏排行榜按钮。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。(2)游戏控制模块:这个模块是游戏的中心环节,主要完成控制游戏的速度、暂停、重新开始等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制、游戏的暂停、游戏的退出等功能,分为:游戏主界面模块、游戏控制模块以二个模块。(3)性能:本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。2.2.2概要设计2.2.2.1自定义类说明类名:Exception作用:用来处理当蛇撞到墙或自己的身体时程序的运行继承的父类:GreedSnake类实现的接口:没有2.2.3详细设计2.2.3.1程序概述本程序是一个利用Java应用软件制作的贪食蛇小游戏。在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;通过F和S键来控制蛇的移动速度,每单击一次,蛇的移动速度改变一次,改变频率为0.5。游戏运行过程中,如果想暂停,只需要按P键即可。重新开始游戏的按键为R。当蛇吃到食物且没有碰到墙壁或自己的身体时,按照积分规则得到相应的分数;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点是无法保存分数。2.2.3.2程序流程图本次游戏设计的处理流程如图2-1所示:徐州工程学院课程设计报告42.2.3.3总设计模块的划分根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2-2所示:单击“开始游戏”按钮,游戏开始,蛇开始随机。键盘操作:向上左移右移向下没有吃到食物且蛇碰到边界单击“退出游戏”退出游戏游戏中途欲中断,稍后继续游戏单击“暂停游戏”游戏暂停进入游戏画面再次单击开始游戏,游戏恢复图2-1游戏处理流程图徐州工程学院课程设计报告5图2-2游戏总设计模块游戏控制模块的主要框架如图2-3所示:图2-3游戏控制模块框架游戏重新开始控制:点击“R”键后,系统图重新载入,即游戏重新开始。游戏暂停控制:点击“P暂停游戏”按钮,游戏暂停;再单击,游戏继续。游戏移动速度功能控制:点击“F,S”按钮,蛇的移动速度就会改变,每点击一次,速度的改变频率为0.5。游戏的得分:本游戏不是按照贪吃蛇吃到一个食物就加一分进行得分,而是赋予具体的得分规则,当蛇吃到食物且没有碰到边界或没有碰撞到自己的身体时,按照具体的规则进行得分。徐州工程学院课程设计报告62.2.3.4类、方法、属性说明(1)成员变量本次游戏设计所需成员变量如下表2-1所示:表2-1主要成员变量(属性)成员变量描述变量类型名称文件菜单中子菜单“新建”JMenuItemmFile_New编辑菜单中子菜单“撤消”JMenuItemmEdit_Undo格式菜单中子菜单“颜色”JMenuformatMenu_Color帮助菜单中子菜单“帮助主题”MenuItemmHelp_HelpTopics(2)成员方法本次游戏设计所需成员方法如下表2-2所示:表2-2主要方法方法名功能备注Notepad4()描述记事本无Text.setBackground(Color.white)设置编辑区默认背景色无Text.setForeground(Color.black)设置编辑区默认前景色无3.系统实现及结果分析本程序在运行后,能够正常的相应按键事件。由于程序的主要部分已经集成为一个对象SnakeModel,所以利用键盘就可以实现操作。蛇前行的过程中,可以任意向其左或右方向改变方向,但按其前进方向和前进的反方向都没有反应。点击F,S键后,蛇的移动速度会根据点击的次数而改变。每点击一次,速度的改变频率为0.5。点击P键后游戏就暂停了。点击R键后系统则重新载入,即游戏重新开始。运行结果如下图3-1所示:徐州工程学院课程设计报告7图3-1程序运行图当蛇没有吃到食物且碰到边界或碰撞到自己的身体时,游戏结束,此时得分为0。如果想重新开始即按R键,运行结果如下图3-2所示:徐州工程学院课程设计报告8图3-2程序结束图当蛇吃到食物且没有碰到边界或没有碰撞到自己的身体时,此时按照积分规则得到相应的分数。运行结果如下图3-3所示:图3-3程序运行图程序异常处理:在蛇的运行线程过程中,当蛇撞到墙或自己的身体时,将抛出一Exception类的异常对象,然后使用try-catch去捕捉这个异常。异常的处理如下:try{Thread.sleep(timeInterval);}catch(Exceptione){break;}徐州工程学院课程设计报告94.总结与心得体会通过这次课程设计,我对这学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够实现自己预先的构想,我通过上网和去图书馆找程序,比较好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。在做Java设计之前也有做过其他的课程设计,大多规模很小。在数据库、各种应用软件和游戏中,我仍觉得对游戏的设计有极大的热情。因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。大学期间做过图书馆管理程序等简单的数据库管理系统的课程设计,思想大致相似,变化范围有限,没有太多自己可发挥的余地。综合运用以前所学习的知识,设计一个JAVA游戏,并能实现以下的功能:游戏暂停、游戏重新开始、游戏的结束。总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。徐州工程学院课程设计报告10参考文献[1]魏伟译.JBuilder开发人员指南[M].北京:机械工业出版社,2001.1.[2]耿祥义,张跃平.Java2实用教程(第三版)北京:清华大学出版社,2006.[3]田勇,孙新.Jbuilder开发人员指南[M].北京:机械工业出版社,2001.[4]李尊朝,苏军.Java语言程序设计(第二版)[M].北京:中