java贪吃蛇课程设计.docx
- 文档编号:6390990
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:12
- 大小:741.26KB
java贪吃蛇课程设计.docx
《java贪吃蛇课程设计.docx》由会员分享,可在线阅读,更多相关《java贪吃蛇课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
java贪吃蛇课程设计
学院:
计算机工程学院班级:
11级计算机科学与技术1班
设计人员:
设计地点(单位):
A5-103
设计题目:
贪吃蛇游戏
完成日期:
年月日
指导教师评语:
_______________________________________________________________________________
成绩(五级记分制):
_________________
教师签名:
_________________________
摘 要
近年来,java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了各个国家广泛地认可。
本文基于java技术和Eclipse开发环境,设计并实现了一个操作简单、界面美观的“贪吃蛇”游戏。
“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。
就整个游戏来说,目的是通过本游戏的设计与实现,达到学习java技术和熟悉软件开发流程的目的。
关键词:
java,贪吃蛇,eclipse
绪论
“贪吃蛇”游戏是一个经典的游戏,对于程序来说贪吃蛇制作相对简单,而且逻辑性强,通常是要步入游戏开发这个队伍前必练的项目。
贪吃蛇这个游戏的制作方法对于以前的我而言是很神秘的,我希望通过我们所学的知识和自己的努力把它剖析起来。
正是由于这个想法,本文基于java技术和Eclipse开发环境,设计并实现了一个操作简单、界面美观的“贪吃蛇”游戏。
由于时间的紧迫和技术有限,编写的贪吃蛇游戏还是相对简单,但就整个游戏来说,目的是通过本游戏的设计与实现,达到学习java技术和熟悉软件开发流程的目的。
我相信在以后通过自己不断的努力我会在编程这条路上越走越远。
本文首先介绍了java技术,对java技术进行了概述,然后对开发工具进行了选择,又进行了需求分析进而通过java语言设计出了贪吃蛇这个经典的小游戏,为了保证代码的正确性和可靠性最后还进行了系统测试。
1Java的概述
1.1java的简介
java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。
就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。
不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。
但在J2SE1.4.2发布后,Java的执行速度有了大幅提升[3]。
Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。
具体来说,它具有如下特性:
简单性、面向对象、分布式、健壮性、结构中立、安全性、可移植、解释的、高性能、多线程、动态性等。
1.2环境配置
1.2.1JDK安装
⑴安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:
\java\jdk1.6.0_02;
⑵安装完成后,右击“我的电脑”,点击“属性”;
⑶选择“高级”选项卡,点击“环境变量”
⑷在“系统变量”中,设置三项属性,JAVA_HOME,PATH,CLASSPATH,若已存在则点击“编辑”,不存在则点击“新建”;
⑸JAVA_HOME指明JDK安装路径。
⑹“开始”->;“运行”,键入“cmd”;
⑺键入命令“java-version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功。
1.2.2系统工具的选择安装
本论文采用的工具是Eclipse。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
2系统介绍
2.1系统的介绍
本论文设计的游戏名称为贪吃蛇,蛇身是有很多的小方块组成的,蛇头与蛇身都是用小方块来组成,每一个小方块是蛇身上的最小单位,贪吃蛇所吃的食物也是有一个个小方块儿组成,食物会随机出现,当蛇吃掉一个小方块儿后蛇身会变长然后会随机出现下一个小方块儿。
障碍物也会随机出现,而且随着时间增长,障碍物会增多,当蛇头碰到蛇身、障碍物或者边框的时游戏会自动结束。
2.2设计目的
综合运用在校所学的知识和技能,设计并实现贪吃蛇游戏,使自己熟悉应用系统的开发的过程,培养独立的思考能力,校验学习效果和动手能力,提高实践动手能力。
2.3需求分析
在一定的范围内,给出一条小蛇和随机出现一个食物与一个障碍物,当小蛇吃到食物时蛇身就长长。
考虑到用户需求对蛇的移动做了多组快捷键设置,游戏整体界面简洁,操作简单。
2.3.1游戏形状需求
绘制简洁清晰的小蛇和食物,小蛇由几个方块组成,食物由一个图片组成。
障碍物由多个图片组成随机形状。
2.3.2键盘事件处理
小蛇可以通过键盘方向键(上,下,左,右)或者按键(W,S,A,D)进行方向的移动。
当蛇头碰到障碍物,蛇身或者墙壁的时候游戏会结束。
2.3.3显示需求
当小蛇吃掉食物后会变长,并且吃完食物时食物会消失,并立即产生一个1个新的食物,蛇身随着蛇的移动不断刷新。
2.3.4接口控制
本软件通过键盘进行操作,在windows操作系统下,利用键盘的按键进行操作,要使用键盘的接口事件。
3系统设计
3.1系统所需定义的类
游戏设计中所涉及的相关资源,如图3.1:
图3.1系统资源
涉及资源如下:
1、SnakeMain.java类是程序运行主类,通过调用相关资源实现游戏运行。
2、SnakeAt.java类是蛇的实体类,包含蛇身点的横坐标与纵坐标属性,通过多个此类对象实现蛇身。
3、SnakeFrame类是游戏主体设计类,包含游戏界面、蛇身绘制,游戏设置、监听,蛇身移动操作。
4、image文件夹包含游戏主体背景图片,食物图片与障碍物图片。
5、Jdbc_connect.java连接ORACLE数据库,实现记录游戏记录与游戏排行。
6、score.java游戏记录类。
3.2功能设计
1、主界面
通过一个窗口与各按钮实现主界面设计,主界面主体为一个窗口,通过绘制一个方框做为游戏边界,以图片分别实现蛇身与障碍物显示。
按钮与状态进行游戏控制与显示游戏状态。
2、游戏操作
通过对游戏线程控制实现游戏不同难度(移动速度)设定,通过键盘监听器设置实现
贪吃蛇移动方向控制,用集合存储蛇身,通过对集合的操作实现蛇身的移动,吃到食物集合长度加一,以线程中断弹窗实现游戏结束。
3、参数设置
游戏开始时设置保护蛇头操作,障碍物与食物的出现位置为随机的,且随着游戏时间增长障碍物数量增加,且食物与障碍物不得出现在蛇身存在的位置,使用ORACLE数据库记录游戏记录并进行排行操作。
4系统实现
4.1界面初始化
publicvoidpaintComponent(Graphicsg){
super.paintComponent(g);
g.drawImage(img,5,45,765,510,null);//设置一个方框,窗口的游戏主界面//绘制img中当前可用的图像。
//g.drawRect(5,45,765,510);//51,34
g.drawString("分数:
"+score,650,20);
g.drawString("速度:
"+speed,650,35);
if(start){//开始游戏
g.setColor(Color.RED);//设置游戏中的食物的颜色为红色
g.drawImage(img1,5+rx*15,45+ry*15,15,15,null,null);//蛇开始出现
//g.fillOval(5+rx*15,45+ry*15,15,15);
g.setColor(Color.white);//设置蛇的颜色
for(inti=0;i g.fill3DRect(5+list.get(i).getX()*15,//使用当前颜色填充突起3d方块。 45+list.get(i).getY()*15,15,15,true); } //设置障碍物 Set Iterator while(it1.hasNext()){ SnakeActf=(SnakeAct)it1.next(); g.drawImage(img2,5+f.getX()*15,45+f.getY()*15,15,15,null,null); } } } 初始化结果如图3.2: 图3.2初始化界面 4.2 蛇体实现 4.2.1蛇体坐标类 packagetestfile; publicclassSnakeAct{//蛇体坐标类 privateintx;//蛇身点横坐标 privateinty;//蛇身点纵坐标 publicSnakeAct(intx,inty){ super(); this.x=x; this.y=y; } publicSnakeAct(){ super(); } publicintgetX(){ returnx; } publicvoidsetX(intx){ this.x=x; } publicintgetY(){ returny; } publicvoidsetY(inty){ this.y=y; } } 通过两个坐标确定组成蛇身方块的位置。 4.2.2初始化蛇体 g.drawImage(img1,5+rx*15,45+ry*15,15,15,null,null);//蛇开始出现 g.setColor(Color.white);//设置蛇的颜色 for(inti=0;i g.fill3DRect(5+list.get(i).getX()*15,//使用当前颜色填充突起3d方块。 45+list.get(i).getY()*15,15,15,true); } 4.2.3蛇体变化 publicvoidotherMove(){//蛇身移动 SnakeActtempAct=newSnakeAct(); for(inti=0;i if(i==1){//保护蛇头 list.get(i).setX(list.get(0).getX()); list.get(i).setY(list.get(0).getY()); }elseif(i>1){ tempAct=list.get(i-1); list.set(i-1,list.get(i)); list.set(i,tempAct); } } } privatevoideat(){//吃到食物 if(rx==list.get(0).getX()&&ry==list.get(0).getY()){ createFood(); SnakeActtempAct=newSnakeAct(); tempAct.setX(list.get(list.size()-1).getX()); tempAct.setY(list.get(list.size()-1).getY()); list.add(tempAct); score+=100+100*speed; tempeat1+=1; if(tempeat1-tempeat2>=5){ tempeat2+=5; if(speed<9){ speed+=1; if(speed-tempspeed>=3){ tempspeed+=3; setHinder(); } } } } } publicvoidrun(){//蛇自动移动 //TODOAuto-generatedmethodstub while(true){ if(start){ switch(temp){ case1: move(0,-1); break; case2: move(0,1); break; case3: move(1,0); break; case4: move(-1,0); break; default: move(1,0); break; } repaint(); try{ Thread.sleep(500-(50*speed));//移动速率 }catch(InterruptedExceptione){ e.printStackTrace(); } } } } 初始化设置蛇体基本方块的形状与颜色,切对初始蛇头文职进行限制,避免开始游戏时由于蛇头位置导致游戏直接结束,通过对蛇身集合的操作实现蛇身的增长与蛇的移动。 4.3 食物实现 通过随机函数生成食物坐标,且对食物出现位置进行判断,食物不能出现在蛇身坐标上。 4.4障碍物实现 通过随机函数生成障碍物坐标进行障碍物显示,并对障碍物位置进行判断,不允许障碍物出现在蛇身坐标。 4.5 游戏控制实现 通过键位监听器对键位响应与相关操作实现游戏操作,控制贪吃蛇的上下左右的移动,当没有监听到响应键位操作时贪吃蛇保持当前移动状态。 4.6排行榜实现 4.6.1数据库结构 4.6.2排行榜简介 通过ORACLE数据库记录游戏记录,从数据库中读取数据并排序,通过窗口显示排行数据,实现游戏排行榜功能。 5游戏的测试 测试的目的是尽可能的发现潜在的错误和缺陷,为了保证系统的质量和可靠性,我们对游戏进行了测试。 在开发的每一个阶段都应精心设计,并利用实例来运行程序,使可以发现错误。 系统的测试是为了发现错误而要执行的过程。 由于技术水平有限此课程设计所设计的贪吃蛇游戏过于简单,但是也付出了巨大的努力,所以无论简单与否测试都是必须执行的过程。 本程序进行测试后没有发现异常。 6总结 此次课程设计让我们学到很多,也了解了程序开发的具体过程。 在学习、使用java的过程中,让我没们对编程语言有了新的认识。 在不断的调试、修改的过程当中,我们对程序的设计与构架在整体上有了长足的进步。 在做java课程设计以前,我们对Java游戏开发只是停留在理论知识的水平上,缺乏实际的软件开发经验。 这次通过做java课程设计,我们完成了贪吃蛇游戏的软件开发任务。 在整个开发过程中遇到了很多问题,如蛇的移动的表示、图形化界面的设计问题,但这些问题最终都被攻克了下来。 首先,完成了从局部到整体从细节到大局的转变。 设计过程中,经常会遇到困难,我们学会通过反复思考和测试,然后找出自己的错误并加以改正,再进行下一个步骤。 这个程序就是在这样反复过程序中一点一点的完成的。 其次,做设计是一个不断学习新事物的过程,从设计初的不懂到最后能够顺利完成,我体会到在实践中学习的重要性,这对于将来我继续从事计算机行业打下了基础。 最后,通过课设使我对Java这门课程有了一定的了解。 经过一个月的不断努力,课设内容已经基本上完成了。 回顾整个过程,我学到了许多书本上没有学到的知识。 通过这次自己制作的贪吃蛇游戏,丰富了自己的实践技能,扩展了本专业的知识面,使我受益良多,同时也体会到了搞软件开发的困难程度。 总之,在这一次的课设过程中,我们查阅了大量的资料,对Java有了一点初步的认识,更重要的是,它还让我认识到了自己的不足,在编程方面,我仅仅是刚刚入门而已,以后的道路任重道远,需要我不断的丰富自己、充实自己,这样才能在程序设计方面有所收获。 致谢 此课程设计是在我们小组的共同努力下完成的。 从选题到编码再到测试最终完成,我们遇到了很多困难,但在大家的齐心努力下,我们不懈努力,团结合作,克服了一个个的难题,最终完成课程设计。 在解决困难时,我们也学到很多,而查阅资料也使我们在温故的同时也学到了很多新的知识,再次,特别感谢组员的齐心与努力! 参考文献 [1]印旻,王行言.Java语言与面向对象程序设计(第2版)[M].北京: 清华大学出版社,2007.11: 202—285. [2]李钟蔚,马文强,陈丹丹等.Java从入门到精通[M].北京: 清华大学出版社,2008.9: 77—160. [3]申林,贾美娟.Java语言与C++语言的比较[J].电脑学习,2011.6,编号: 1002-2422(2010)03一0088一O3. [4]李钟蔚,马文强,王殊宇.Java项目开发实例[M].北京: 人民邮电出版社,2008.9: 48—126.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 贪吃 课程设计