山西农业大学信息学院_第1页
山西农业大学信息学院_第2页
山西农业大学信息学院_第3页
山西农业大学信息学院_第4页
山西农业大学信息学院_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、计科信072 贾向宇 (51)山西农业大学信息学院JAVA程序设计课程设计课题名称 贪食蛇游戏程序 学 号 _051_姓 名 贾向宇 班 级 计科信072 1. 课题背景(该部分主要用于描述此课题的科学技术意义和应用前景以及设计该课题的目的与意义。)(0.5-1页)Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java环境可用来开发能在任何计算平台上运行的应用软件。它实际上是一种非常基本且结构紧凑的技术,而它对WorldWide Web以及商业的总体影响已可同电子表格对PC机的影响相比拟。Java建立在简单的前提基础上,即所有

2、微处理器都应讲同一种语言?所有内部采用芯片的产品都应能一起工作,无缝而方便地共享信息。它已经改变企业和个人同Internet大交道的方式。现在,它正在对消费类产品产生明显的影响,而且从总体上更加深刻地影响企业计算。Java无处不在。它已拥有几百万个用户,其发展速度要快于在它以前的其他任何一种计算机产品。它可位于任何地方,而且能到处运行。Java正在迅速被用做传播信息的事实上标准,这是因为它既可给企业,也可给最终用户带来似乎数不清的好处。本贪食蛇游戏设计是总结学习java程序设计语言的的基础的设计的,主要应用了java语言的基础功能,能提高java语言的使用,熟悉java平台的编程。本次设计采用

3、了游戏程序设计,提高了设计的趣味性与实用性,使编程趣味话。贪食蛇是java程序编程的简单应用,提高了我编程的能力,对项目的编程有了绝提的的实践。2. 需求分析(该部分主要用于说明:主要研究内容,包括总体设计,主要功能以及使用的主要技术。(1) 总体设计,实现的主要功能设计一个窗口,包含贪食蛇程序,按键盘上下左右控制蛇移动,蛇吃到食物长大,吃到自己或者石头死亡,弹出对话框,点击确定重新开始游戏。点击关闭游戏退出。(2) 使用的主要平台和工具,有哪些可选方案,对你所采用的方案说明理由系统平台:windows7开发工具:j2se develop kit 1.6.0 update20,Eclipse

4、classical 3.5.2方案:游戏的核心算法是蛇在面板上的移动方式的实现,具体有两个算法实现蛇的移动方式:1. 蛇移动时,蛇头先移动一个单位,然后蛇身随蛇头移动,简图如下2. 蛇移动时,在蛇头前加一个新的单位作为新的蛇头,最后的蛇尾剪去一个单位,简图如下很明显的,方法2的实现比方法1 的实现要简洁明了,更容易程序化实现,使程序更容易编写,所以本设计采用第2中方案实现。(3) 项目组成员分工情况)(1-2页)参与设计人员分工情况贾向宇栗鹏超冯志强3. 系统设计(该部分主要用于说明:具体研究方法,包括具体的设计内容和关键技术说明(1)设计中具体实现技术总结以及创新点1.涉及的主要类与主要方法

5、:GamePanel类 显式面板void display();/显示Snake类 蛇void move();/移动void changeDirection();/变向void eatFood();/吃食物(变长)boolean isEatBody();/是否吃自己void drawMe();/显示Food类 食物boolean isSnakeEatFood(Snake);/是否吃到食物void drawMe;/显示Ground类 石头bolean isSnakeEatRock(Snake);/是否吃到石头void drawMe;/显示Controller类各种逻辑控制方法2.关键技术1)蛇移动

6、方法2)逻辑控制方法的实现3)随机生成的食物不能与石头重叠 (2)关键技术代码说明)(多人合作者,该部分主要体现自己所做的工作)(3-4页)Controller类:按键事件的定义public void keyPressed(KeyEvent e) / TODO Auto-generated method stubswitch(e.getKeyCode()case KeyEvent.VK_UP:snake.changeDirection(Snake.UP);break;case KeyEvent.VK_DOWN:snake.changeDirection(Snake.DOWN);break;ca

7、se KeyEvent.VK_LEFT:snake.changeDirection(Snake.LEFT);break;case KeyEvent.VK_RIGHT:snake.changeDirection(Snake.RIGHT);break;Snake类蛇移动的方法public void move()if(!(oldDirection +newDirection = 0)oldDirection = newDirection;/判断无效方向和相反方向/蛇移动算法:/1.去尾oldTail = body.removeLast();int x = body.getFirst().x;int

8、y = body.getFirst().y;switch(oldDirection)case UP:y-;if(y = Global.HEIGHT)y = 0;break;case LEFT:x-;if(y = Global.WIDTH)x = 0;break;Point newHead = new Point(x, y);/2.加头body.addFirst(newHead);蛇的有效移动的处理private class SnakeDriver implements RunnableOverridepublic void run() / TODO Auto-generated method

9、stubwhile(life)move();for (SnakeListener l: listeners)l.snakeMoved(Snake.this);try Thread.sleep(300); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();蛇吃了食物以后的方法public boolean isEatBody()for(int i = 1; i body.size(); i+)if(body.get(i).equals(this.getHead()return tr

10、ue;return false;4. 系统调试(该部分主要用于说明:项目进行过程中存在的问题及采取的措施。(1) 在设计过程中遇到的技术问题,分析可以解决的技术路线,你所采取的解决的对策以及理由。Java中awt包在本设计的使用过程中有明显的不足,所以本设计采用了java中的swing包调用程序绘制方法(2) 在调试过程中存在的问题,你是如何解决的。)(多人合作者,该部分主要体现自己所做的工作)(1-3页)在调试过程中,蛇会按照相反方向移动解决:public static final int UP = -1;public static final int DOWN = 1;public sta

11、tic final int LEFT = 2;public static final int RIGHT = -2;public void changeDirection(int direction)/蛇移动方向的改变If(!direction + this.dirction = 0)This.direction = direction;具体来说就是改变蛇移动方向改变changeDriection()方法,将定义的上下左右常量值修改,如果和为0就是相反方向了,如此的排除相反方向。调试过程中,蛇移动会出现无效方向原因是在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入了多个方向,只有最后一个

12、方向有效,其余无效排除无效方向解决:定义两个方向Private int oleDirection,newDirection;private int oldDirection, newDirection;修改蛇的move()和changeDirection()方法,直接排除无效方向和相反方向public void move()if(!(oldDirection +newDirection = 0)oldDirection = newDirection;/判断无效方向和相反方向oldTail = body.removeLast();int x = body.getFirst().x;int y = body.getFirst().y;switch(oldDirection)Point newHead = new Point(x, y);/2.加头body.addFirst(newHead);public void changeDirection(int direction)newDirection = direction;5. 小结(该部分主要用于说明:与预期计划和目标比较,说明完成情况,以及对该课题的设计心得体会!

温馨提示

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

评论

0/150

提交评论