java贪吃蛇课程设计_第1页
java贪吃蛇课程设计_第2页
java贪吃蛇课程设计_第3页
java贪吃蛇课程设计_第4页
java贪吃蛇课程设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、设计人员:设计地点(单位): A5-103 设计题目: 贪吃蛇游戏完成日期: 年 月 日 指导教师评语:_ 成绩(五级记分制):_ 教师签名:_摘要近年来,java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了各个国家广泛地认可。本文基于java技术和Eclipse开发环境,设计并实现了一个操作简单、界面美观的“贪吃蛇”游戏。“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。就整个游戏来说,目的是通过本游戏的设计与实现,达到学习java技术和熟悉软件开发流程的目的。关键词:java , 贪吃蛇, eclipse目录绪论11 Java的概述21.1 java

2、的简介21.2 环境配置21.2.2 系统工具的选择安装32 系统介绍32.1 系统的介绍32.2 设计目的42.3 需求分析42.3.1 游戏形状需求42.3.2 键盘事件处理42.3.3 显示需求42.3.4 接口控制43 系统设计53.1 系统所需定义的类53.2 功能设计64 系统实现64.1 界面初始化64.2 蛇体实现84.2.1 蛇体坐标类84.2.2 初始化蛇体94.2.3 蛇体变化94.3 食物实现124.4 障碍物实现124.5 游戏控制实现124.6 排行榜实现125 游戏的测试136 总结14致 谢14参考文献15绪论“贪吃蛇”游戏是一个经典的游戏,对于程序来说贪吃蛇制

3、作相对简单,而且逻辑性强,通常是要步入游戏开发这个队伍前必练的项目。贪吃蛇这个游戏的制作方法对于以前的我而言是很神秘的,我希望通过我们所学的知识和自己的努力把它剖析起来。正是由于这个想法,本文基于java技术和Eclipse开发环境,设计并实现了一个操作简单、界面美观的“贪吃蛇”游戏。由于时间的紧迫和技术有限,编写的贪吃蛇游戏还是相对简单,但就整个游戏来说,目的是通过本游戏的设计与实现,达到学习java技术和熟悉软件开发流程的目的。我相信在以后通过自己不断的努力我会在编程这条路上越走越远。本文首先介绍了java技术,对java技术进行了概述,然后对开发工具进行了选择,又进行了需求分析进而通过j

4、ava语言设计出了贪吃蛇这个经典的小游戏,为了保证代码的正确性和可靠性最后还进行了系统测试。1Java的概述1.1 java的简介java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平

5、台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升3。Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。 具体来说,它具有如下特性: 简单性、面向对象、分布式、健壮性、结构中立、安全性、可移植、解释的、高性能、多线程、动态性等。1.2 环境配置1.2.1 JDK安装 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:javajdk1.6.0_02; 安装完成后,右击“我的电

6、脑”,点击“属性”; 选择“高级”选项卡,点击“环境变量” 在“系统变量”中,设置三项属性,JAVA_HOME,PATH,CLASSPATH,若已存在则点击“编辑”,不存在则点击“新建”; JAVA_HOME指明JDK安装路径。“开始”>“运行”,键入“cmd”; 键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功。1.2.2 系统工具的选择安装本论文采用的工具是Eclipse。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Ec

7、lipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 2 系统介绍2.1 系统的介绍本论文设计的游戏名称为贪吃蛇,蛇身是有很多的小方块组成的,蛇头与蛇身都是用小方块来组成,每一个小方块是蛇身上的最小单位,贪吃蛇所吃的食物也是有一个个小方块儿组成,食物会随机出现,当蛇吃掉一个小方块儿后蛇身会变长然后会随机出现下一个小方块儿。障碍物也会随机出现,而且随着时间增长,障碍物会增多,当蛇头碰到蛇身、障碍物或者边框的时游戏会自动结束。2.2 设计目的综合运用在校所学的知识和技能,设计并实现贪吃蛇游戏,使自己熟悉应用系统的开发的过程,培养独立

8、的思考能力,校验学习效果和动手能力,提高实践动手能力。 需求分析在一定的范围内, 给出一条小蛇和随机出现一个食物与一个障碍物,当小蛇吃到食物时蛇身就长长。考虑到用户需求对蛇的移动做了多组快捷键设置,游戏整体界面简洁,操作简单。2.3.1 游戏形状需求绘制简洁清晰的小蛇和食物,小蛇由几个方块组成,食物由一个图片组成。障碍物由多个图片组成随机形状。2.3.2 键盘事件处理小蛇可以通过键盘方向键(上,下,左,右)或者按键(W,S,A,D)进行方向的移动。当蛇头碰到障碍物,蛇身或者墙壁的时候游戏会结束。2.3.3 显示需求当小蛇吃掉食物后会变长,并且吃完食物时食物会消失,并立即产生一个1个新的食物,蛇

9、身随着蛇的移动不断刷新。2.3.4 接口控制本软件通过键盘进行操作,在windows操作系统下,利用键盘的按键进行操作,要使用键盘的接口事件。3 系统设计3.1 系统所需定义的类游戏设计中所涉及的相关资源,如图:图3.1 系统资源涉及资源如下:1、SnakeMain.java 类是程序运行主类,通过调用相关资源实现游戏运行。2、SnakeAt.java 类是蛇的实体类,包含蛇身点的横坐标与纵坐标属性,通过多个此类对象实现蛇身。3、SnakeFrame 类是游戏主体设计类,包含游戏界面、蛇身绘制,游戏设置、监听,蛇身移动操作。4、image文件夹包含游戏主体背景图片,食物图片与障碍物图片。5、J

10、dbc_connect.java 连接ORACLE数据库,实现记录游戏记录与游戏排行。6、score.java 游戏记录类。1、 主界面通过一个窗口与各按钮实现主界面设计,主界面主体为一个窗口,通过绘制一个方框做为游戏边界,以图片分别实现蛇身与障碍物显示。按钮与状态进行游戏控制与显示游戏状态。2、 游戏操作通过对游戏线程控制实现游戏不同难度(移动速度)设定,通过键盘监听器设置实现贪吃蛇移动方向控制,用集合存储蛇身,通过对集合的操作实现蛇身的移动,吃到食物集合长度加一,以线程中断弹窗实现游戏结束。3、 参数设置游戏开始时设置保护蛇头操作,障碍物与食物的出现位置为随机的,且随着游戏时间增长障碍物数

11、量增加,且食物与障碍物不得出现在蛇身存在的位置,使用ORACLE数据库记录游戏记录并进行排行操作。4 系统实现public void paintComponent(Graphics g) super.paintComponent(g);g.drawImage(img,5, 45, 765, 510,null); /设置一个方框,窗口的游戏主界面/绘制img中当前可用的图像。/g.drawRect(5, 45, 765, 510);/ 51,34g.drawString("分数:" + score, 650, 20);g.drawString("速度:"

12、+ 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 (int i = 0; i < list.size(); i+) /画蛇身,有几个就画几个g.fill3DRect(5 + list.get(i)

13、.getX() * 15, /使用当前颜色填充突起3d方块。45 + list.get(i).getY() * 15, 15, 15,true);/设置障碍物Set<SnakeAct> set = hinderSet;/障碍物节点集合Iterator<SnakeAct> it1 = set.iterator();while (it1.hasNext() SnakeAct f = (SnakeAct) it1.next();g.drawImage(img2,5 + f.getX() * 15, 45 + f.getY() * 15, 15, 15,null,null);初

14、始化结果:图3.2 初始化界面4.2蛇体实现4.2.1 蛇体坐标类package testfile;public class SnakeAct /蛇体坐标类private int x; /蛇身点横坐标private int y; /蛇身点纵坐标public SnakeAct(int x, int y) super();this.x = x;this.y = y;public SnakeAct() super();public int getX() return x;public void setX(int x) this.x = x;public int getY() return y;pub

15、lic void setY(int y) this.y = y;通过两个坐标确定组成蛇身方块的位置。4.2.2 初始化蛇体g.drawImage(img1,5 + rx * 15, 45 + ry * 15, 15, 15,null,null); /蛇开始出现g.setColor(Color.white); /设置蛇的颜色for (int i = 0; i < list.size(); i+) /画蛇身,有几个就画几个g.fill3DRect(5 + list.get(i).getX() * 15, /使用当前颜色填充突起3d方块。45 + list.get(i).getY() * 15

16、, 15, 15,true);4.2.3 蛇体变化public void otherMove() /蛇身移动SnakeAct tempAct = new SnakeAct();for (int i = 0; i < list.size(); i+) if (i=1) /保护蛇头list.get(i).setX(list.get(0).getX();list.get(i).setY(list.get(0).getY();else if (i>1) tempAct = list.get(i-1);list.set(i-1, list.get(i);list.set(i,tempAct)

17、; private void eat() /吃到食物 if (rx=list.get(0).getX()&&ry=list.get(0).getY() createFood();SnakeAct tempAct = new SnakeAct();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)

18、 tempeat2 += 5;if (speed<9) speed+=1;if (speed-tempspeed>=3) tempspeed+=3;setHinder();public void run() /蛇 自动移动/ TODO Auto-generated method stubwhile (true) if (start) switch (temp) case 1:move(0, -1);break;case 2:move(0, 1);break;case 3:move(1, 0);break;case 4:move(-1, 0);break;default:move(1

19、, 0);break;repaint();try Thread.sleep(500-(50*speed); /移动速率 catch (InterruptedException e) e.printStackTrace();初始化设置蛇体基本方块的形状与颜色,切对初始蛇头文职进行限制,避免开始游戏时由于蛇头位置导致游戏直接结束,通过对蛇身集合的操作实现蛇身的增长与蛇的移动。4.3食物实现通过随机函数生成食物坐标,且对食物出现位置进行判断,食物不能出现在蛇身坐标上。4.4 障碍物实现通过随机函数生成障碍物坐标进行障碍物显示,并对障碍物位置进行判断,不允许障碍物出现在蛇身坐标。4.5游戏控制实现通过

20、键位监听器对键位响应与相关操作实现游戏操作,控制贪吃蛇的上下左右的移动,当没有监听到响应键位操作时贪吃蛇保持当前移动状态。4.6 排行榜实现通过ORACLE数据库记录游戏记录,从数据库中读取数据并排序,通过窗口显示排行数据,实现游戏排行榜功能。5 游戏的测试测试的目的是尽可能的发现潜在的错误和缺陷,为了保证系统的质量和可靠性,我们对游戏进行了测试。在开发的每一个阶段都应精心设计,并利用实例来运行程序,使可以发现错误。系统的测试是为了发现错误而要执行的过程。由于技术水平有限此课程设计所设计的贪吃蛇游戏过于简单,但是也付出了巨大的努力,所以无论简单与否测试都是必须执行的过程。本程序进行测试后没有发

21、现异常。6 总结此次课程设计让我们学到很多,也了解了程序开发的具体过程。在学习、使用java的过程中,让我没们对编程语言有了新的认识。在不断的调试、修改的过程当中,我们对程序的设计与构架在整体上有了长足的进步。在做java课程设计以前,我们对Java游戏开发只是停留在理论知识的水平上,缺乏实际的软件开发经验。这次通过做java课程设计,我们完成了贪吃蛇游戏的软件开发任务。在整个开发过程中遇到了很多问题,如蛇的移动的表示、图形化界面的设计问题,但这些问题最终都被攻克了下来。首先,完成了从局部到整体从细节到大局的转变。设计过程中,经常会遇到困难,我们学会通过反复思考和测试,然后找出自己的错误并加以改正,再进行下一个步骤。这个程序就是在这样反复过程序中一点一点的完成的。其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论