Java课程设计之贪吃蛇.docx
- 文档编号:29576015
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:15
- 大小:78.09KB
Java课程设计之贪吃蛇.docx
《Java课程设计之贪吃蛇.docx》由会员分享,可在线阅读,更多相关《Java课程设计之贪吃蛇.docx(15页珍藏版)》请在冰豆网上搜索。
Java课程设计之贪吃蛇
Java课程设计之贪吃蛇
安阳工学院计算机学院
JAVA课程设计报告
专业班级:
学生姓名:
学生学号:
小组成员:
指导教师姓名:
宋强
一选题目的与系统概述„„„„„„„„„„„„„„„„„„„„„„1
1.1选题目的„„„„„„„„„„„„„„„„„„„„„„„„„„„1
1.2系统概述„„„„„„„„„„„„„„„„„„„„„„„„„„„1二系统可行性分析与相关技术背景分析„„„„„„„„„„„„„„2
2.1系统可行性分析„„„„„„„„„„„„„„„„„„„„„„„„2
2.2相关技术背景分析„„„„„„„„„„„„„„„„„„„„„„„2三系统设计与关键技术„„„„„„„„„„„„„„„„„„„„„„3
3.1系统设计„„„„„„„„„„„„„„„„„„„„„„„„„„„3
3.2关键技术„„„„„„„„„„„„„„„„„„„„„„„„„„„5四系统测试与操作实施方法„„„„„„„„„„„„„„„„„„„9五系统设计总结与回顾„„„„„„„„„„„„„„„„„„„„„11
六参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„12
一、选题目的与系统概述
1.1选题目的
贪吃蛇游戏是一款非常经典的游戏,因为它比较简单有趣,无论老少都比较适合。
贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。
在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。
因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。
在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。
正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用Netbeans开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。
学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握Netbeans环境的使用方法,培养起初步的项目分析能力和程序设计能力。
1.2系统概述
1.2.1设计的主要内容
贪吃蛇游戏设计与实现,主要分为以下二个模块:
游戏主界面模块和游戏控制模块。
在此只实现游戏的游戏主界面模块、游戏控制模块。
可实现开始、暂停、改变速度,更换颜色等功能。
1.2.2设计要达到的目标
本次设计要达到的目标分别从以下模块进行阐述:
游戏主界面模块:
游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏场景、状态栏、颜色设置、网格模式、及相关提示信息等。
从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。
游戏控制模块:
这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停等功能。
为了能
-1-
够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。
1.2.3游戏设计环境
本次课程设计所涉及和实现的是用Java编程语言和Netbeans开发工具开发的贪吃蛇游戏。
本次设计的系统环境及工具如下:
编程语言:
Java
使用工具:
jdk-6u16-windows-i586NetbeansIDE7.0.1
二、系统可行性分析与相关技术背景分析
2.1系统可行性分析
游戏开发成功后,最终用户为各个年龄段的人群,用户范围相当广泛。
本游戏友好的用户界面,简单易学的按钮操作以及简单通俗的游戏规则,使广大的用户不需要专门进行培训,就可以立即学会如何使用。
本游戏的核心算法是如何实现移动和吃掉食物,没有碰到食物时,把当前远东方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架的背景颜色绘制出队的节点,这样就可以达到出队的效果。
而在吃食物的时候,只需把食物入队即可。
实现贪吃蛇的基本蛇的移动、吃到食物身体增长、碰壁后不会死亡,能够暂停和开始,以及当吃到自身时不会死亡。
在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,连接速度快,以确保系统可使用性好。
另外,还要求系统的可扩展性、可维护性、可移植性良好。
软件开发过程中的功能模块设计,主要解决实现该游戏需求的程序模块设计问题。
包括如何把该游戏划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及模块结构的设计等。
2.2相关技术背景分析
本次设计要运用java语言来完成,java的特点是面向对象,可移植性,安全性,并发机制,支持可视化图形界面等,运用java语言能够开发出安全,美观,
JDK运行高效的游戏。
本实验用到了Sun公司开发的jdk的java运行环境,是整JavaJavaJavaJava个的核心,包括了运行环境,工具和基础的类库。
JavaNetbeansNetBeansIDE用到了语言的项目开发软件。
是一个屡获殊荣的
WindowsMacLinuxSolarisNetBeans集成开发环境可以方便的在,,和中运行,包
-2-
NetBeansIDEJava括开源的开发环境和应用平台,可以使开发人员利用平台能够快
WebNetBeansIDEPHPRuby速创建、企业、桌面以及移动的应用程序,目前支持、、JavaScriptAjaxGroovyGrailsC/C++NetBeans、、、和等开发语言。
开发环境提供了丰富的产品文档和培训资源以及大量的第三方插件。
本课程项目是运用的Netbeans7.0.1的最新版本。
三、系统设计与关键技术
3.1系统设计
3.1.1游戏设计流程图
本次游戏设计的处理流程如图1所示。
进入游戏画面
按ENTER键开始游戏。
键盘操作:
左移
右移
向下向上
蛇头碰到蛇尾游戏中途欲中断,稍
后继续游戏
是
出现“是否再来一按ENTER键暂停游戏
局,”
否
再次按ENTER键,游
游戏结束戏恢复
图1游戏处理流程图
-3-
3.1.2游戏功能设计
本系统主要完成以下几方面的功能:
1.游戏控制功能——包括游戏的开始、暂停、结束
2.界面布局
3.其他辅助功能
3.1.3模块的划分设计
根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,
如图2所示。
贪吃蛇游戏
游游
戏戏
主控块界制
面模
模块
图2游戏总设计模块
1、游戏主界面模块
游戏界面主框架主要包括游戏场景、状态栏、颜色设置、网格模式、及相关提
示信息。
游戏界面主框架的主要结构图如图3所示。
游戏的主界面框架
)面游面游
即戏戏
游图控
戏形制
画区按
布域钮)界界
图3游戏主界面框架
-4-
2、游戏控制模块
游戏控制模块主要通过键盘上的按键来控制游戏的开始、游戏的暂停、游戏的结束这三个功能以及控制游戏速度变化、蛇的运动方向。
在这个模块中,需要给各个按键或文本框加入代码,来对上述的功能加以进一步的实现。
游戏控制模块的主要框架如图4所示。
游戏控制模块
游游游
戏戏戏
的的的
暂退开
停出始
功功功
能能能
图4游戏控制模块框架
游戏开始控制:
按ENTER键,游戏画布的贪吃蛇即开始游动,游戏正式开始。
游戏暂停控制:
中途可按ENTER键,游戏暂停;再按NETER键,游戏继续。
游戏退出控制:
关闭界面,退出该游戏。
3.2关键技术
3.2.1功能包的设计
1、mysnake包
包含Main方法和MainGui方法
(1)main类
整个程序的入口
packagemysnake;
publicclassMain{
publicstaticvoidmain(String[]agrs){
newMainGui();
-5-
}
}
(2)MainGui类
主界面类,继承自JFrame类,蛇场Box和设置面板settingPanel置于其上,包括对主窗口的属性的设置、注册监听者等
2、mysnake.box包
包含Box类、Food类、Snake类。
设置游戏运行状态,用来设计游戏的用户界面,设置蛇头颜色,食物颜色,背景颜色,随机块颜色,移动以及分数更新,实现上下左右移动的方法接口。
其中更新属性面板的方法如下:
privatevoidupdateProperty(){
//更新蛇长
gui.getSettingPanel().getSnakeLengthLabel().setText(""+
getSnake().getBody().size());
//更新方向
switch(gui.getBox().getSnake().getDirection()){
caseSnake.DIRECTION_DOWN:
gui.getSettingPanel().getDirectionLabel().setText("
下,?
");
break;
caseSnake.DIRECTION_LEFT:
gui.getSettingPanel().getDirectionLabel().setText("
左,?
");
break;
caseSnake.DIRECTION_RIGHT:
gui.getSettingPanel().getDirectionLabel().setText("
右,?
");
break;
caseSnake.DIRECTION_UP:
gui.getSettingPanel().getDirectionLabel().setText("
上,?
");
break;
}
3、mysnake.contral包
包含SettingListener类、SnakeKeyListener类。
SettingListener类是主界面类,继承自JFrame,蛇场Box和设置面板settingPanel置于其上,包括对主窗口的属性的设置、注册监听者等;SnakeKeyListener类设置按键监听,根据按键改
-6-
变蛇的方向、速度等设置。
其中颜色设置的代码实现如下:
privateColorgetComboBoxColor(JComboBoxcomboBox){
ColornewColor;
StringnewColorString=(String)comboBox.getSelectedItem();
if(newColorString.equals("黑色")){
newColor=Color.BLACK;
}elseif(newColorString.equals("蓝色")){
newColor=Color.BLUE;
}elseif(newColorString.equals("青色")){
newColor=Color.CYAN;
}elseif(newColorString.equals("深灰色")){
newColor=Color.DARK_GRAY;
}elseif(newColorString.equals("灰色")){
newColor=Color.GRAY;
}elseif(newColorString.equals("绿色")){
newColor=Color.GREEN;
}elseif(newColorString.equals("浅灰色")){
newColor=Color.LIGHT_GRAY;
}elseif(newColorString.equals("洋红色")){
newColor=Color.MAGENTA;
}elseif(newColorString.equals("橘黄色")){
newColor=Color.ORANGE;
}elseif(newColorString.equals("粉红色")){
newColor=Color.PINK;
}elseif(newColorString.equals("红色")){
newColor=Color.RED;
}elseif(newColorString.equals("白色")){
newColor=Color.WHITE;
}elseif(newColorString.equals("黄色")){
newColor=Color.YELLOW;
}else{
newColor=Color.BLACK;
}
returnnewColor;
}
}
4、mysnake.settingground包
包括clock类和一个设计窗体。
其中clock类主要功能是计时,代码实现如下:
publicclassClock{
/*时间线程*/
-7-
privateThreadtimeThread;
/**经历的时间*/
privateinttime=0;
/**计时器*/
privateTimercounTtimer;
publicClock(){
timeThread=newThread(newRunnable(){
publicvoidrun(){
counTtimer=newTimer(1000,newActionListener(){
publicvoidactionPerformed(ActionEvente){
setTime(getTime()+1);
}
});
getCounTtimer().start();
}
});
}
publicThreadgetTimeThread(){
returntimeThread;
}
publicintgetTime(){
returntime;
}
publicvoidsetTime(inttime){
this.time=time;
}
publicTimergetCounTtimer(){
returncounTtimer;
}
}
当在进行窗体设计时系统会自动生成代码。
窗体设计效果图如图5:
图5
-8-
3.2.2程序主结构
本次所设计贪吃蛇游戏的程序主结构如图6所示。
初始化
初始化失败
不正常退出进入事件等待状态
相关事件退出
返回
开始请求暂停请求正常退出
图6贪吃蛇程序主结构
四、系统测试与操作实施方法
1、打开游戏之后,出现如图7:
图7
2、点击下方的【颜色设置】会出如图8所示界面,选择颜色。
图8
-9-
3、点击右侧的【网格】中的“不显示”可去掉网格,如图9:
图9
4、按enter键开始游戏,并有暂停和继续功能,如图10所示:
图10
5、在蛇运动过程中可以按F11、F12或Z、X进行减速或加速。
6、当蛇运动过程中碰到壁时并不会死亡会从墙的另一侧出来,如图11:
图11
-10-
7、游戏过程中,若蛇头碰到蛇尾则游戏结束,选择是否继续。
如图12:
图12
五、系统设计总结与回顾
“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。
本文基于Java技术和Netbeans开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。
整个游戏程序分为二个功能模块,八个类模块,实现了游戏的开始、暂停、结束。
通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
通过这次课程设计,我对所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够实现自己预先的构想,我们这组通过上网找代码和去图书馆借书找程序,比较画好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。
在做Java设计之前也有做过其他的课程设计,大多规模很小。
综合运用以前所学习的知识,设计一个JAVA小游戏即贪吃蛇,并能实现以下的功能:
游戏背景及样式的控制、蛇与食物的颜色控制、游戏的速度控制、游戏暂停、游戏重新开始、游戏的结束。
因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。
总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。
-11-
六、参考文献
[1]万波,郑海红,潘蓉等.Java语言程序设计基础篇,机械工业出版社.2008.6[2]BruceEckel,ThinkinginJava(ThirdEdition),英文影印版.机械工业出版社.2004[3]刘斌.NetBeans权威指南,机械工业出版社.2008
[4]李尊朝,苏军.Java语言程序设计(第二版)[M].北京:
中国铁道出版社.2009[5]黄晓东.Java课程设计案例精编(第二版)[M].北京:
中国水利水电出社.2008[6]陆光义,宋现锋.Java游戏编程导学[M].北京:
清华大学出版社.2004
-12-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 贪吃