ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:126.86KB ,
资源ID:17802164      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17802164.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JAVA吃豆豆项目报告Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JAVA吃豆豆项目报告Word格式文档下载.docx

1、2总体设计2.1主类设计2.2游戏功能的设计大嘴鱼在吃到小鱼后会升级,速度加快。3详细设计与实现3.1大嘴鱼的设计首先生成创建imgae,获取image的画笔Graphics,利用Graphics完成游戏界面的绘制。Food类的绘制,遍历Food集合,向Food类的paint方法传入画笔。绘制大嘴鱼,小鱼。Food对象用自身方法绘制自己。另绘制积分字段,根据游戏时长绘制游戏状态。最后讲image画入Frame中,完成界面的绘制过程。 Frame继承了Runnable方法,在其run方法中,每30毫秒,调用repaint方法,重绘场景,完成地图场景的刷新。/* * (#)fish.BigMout

2、hFish.java 2008-7-31 * Copy Right Information : Tarena * Project : fish * JDK version used : jdk1.6.4 * Comments : 大嘴鱼类 * Version : 1.0 * Sr Date Modified By Why & What is modified * 1. 2008-7-31 小猪 新建 */package fish;import java.awt.Color;import java.awt.Graphics;import java.awt.event.ActionEvent;im

3、port java.awt.event.ActionListener;import javax.swing.Timer; /* * 大嘴鱼类 * 此类继承AcitonListener,实现AcitonPerformed方法,练习ActionListener的另一种实现方法 * 此类还练习定时器Timer的使用 * 此类还练习图形类Graphics的使用 * 2008-7-31 * author 达内科技Tarena Training Group * version 1.0 * since JDK1.6(建议) */public class BigMouthFish implements Act

4、ionListener/* 大嘴鱼嘴的方向:0-上 */ public static int UP = 0; /* 大嘴鱼嘴的方向:1-右 */ public static int RIGHT = 1;2-下 */ public static int DOWN = 2;3-左 */ public static int LEFT = 3;/* 大嘴鱼的身体大小,以size为半径画圆 */ public int size = 50; /* 大嘴鱼现在的方向(以嘴的方向为基准) */ public int direction = RIGHT; /* 大嘴鱼身体的颜色 */ private Color

5、 color = Color.CYAN; /* 大嘴鱼的位置x */ public int posx = 80; /* 大嘴鱼的位置y */ public int posy = 80; /* 大嘴鱼的速度,鱼每次前进的像素 */ public int speed = 4; /* 大嘴鱼眼睛的大小 */ private int eyesize = size/5; /* 大嘴鱼眼睛的位置x */ private int eyeposx = posx+size/2; /* 大嘴鱼眼睛的位置y */ private int eyeposy = posy+size/5; /* 大嘴鱼眼睛的颜色 */ p

6、rivate Color eyecolor = Color.RED; /* 大嘴鱼嘴的最大角度的一半 */ private int maxMonth = 30; /* 大嘴鱼现在嘴角的角度 */ private int monthsize = 30;/* 大嘴鱼的嘴是否张开 */ private boolean isOpen = true;private Timer time = null; * 大嘴鱼缺省构造函数. * 创建一个位置为(200,200),大小为50,方向为右,颜色为Color.CYAN,速度为10的大嘴鱼 public BigMouthFish() /this的使用。 thi

7、s(200,200,50,RIGHT,Color.CYAN,4); * 根据位置、大小、方向、颜色、速度构造一个大嘴鱼。 * param posx 大嘴鱼的位置x。 * param posy 大嘴鱼的位置y。 * param size 大嘴鱼的大小。 * param direction 大嘴鱼的方向:0-上;1-右;2-下;3-左。出入错误时,默认改为1。 * param color 大嘴鱼的颜色。 * param speed 大嘴鱼的速度。 public BigMouthFish(int posx,int posy,int size,int direction,Color color,int

8、 speed) this.posx = posx; this.posy = posy; this.size = size; if(direction=1 | direction=2 | direction=3 | direction=4) this.direction = direction; this.color = color; this.speed = speed; eyesize = size/7; initEye(); time = new Timer(FishPool.reTime,this); time.start(); * 大嘴鱼移动。根据鱼的方向移动鱼。 public voi

9、d move() switch (direction) case 0: posy-; break; case 1: posx+; case 2: posy+; case 3: posx-; default: * 改变大嘴鱼身体的颜色。 * param color 欲改变大嘴鱼身体的颜色 public void changeColor(Color color) * 改变大嘴鱼的方向 * param direction 欲改变大嘴鱼的方向 public void changeDir(int direction) this.direction = direction; * 使用画笔绘画大嘴鱼.大嘴鱼

10、的头像:一个扇形的是鱼脸,上面有一个小圆是眼睛 * 1.保存画笔颜色 * 2.绘制大嘴鱼的脸 * 3.绘制大嘴鱼的眼睛 * 4.恢复画笔颜色 * param g 画笔 public void paint(Graphics g) /保存画笔的颜色 Color c = g.getColor(); /绘制鱼脸 g.setColor(color); /从(posx,posy)点开始,绘制宽为size,高为size,开始角度为(direction%2=0?(direction+1):(direction-1)*90+monthsize,弧度为360-2*maxMonth的弧形 g.fillArc(pos

11、x, posy, size, size, (direction%2=0?(direction-1)*90+monthsize, 360-2*monthsize); /绘制鱼眼 g.setColor(eyecolor); g.fillOval(eyeposx, eyeposy, eyesize, eyesize); /恢复画笔颜色 g.setColor(c); * 大嘴鱼张嘴闭嘴事件 * 此处只负责鱼的角度的变化,不负责鱼的重绘。 * 重绘在鱼池中实现。 * 这样的好处:保证鱼的绘制和步伐分开。显示层和逻辑层单独处理。(面向对象的责任问题)。 * param e 事件对象 public void

12、 actionPerformed(ActionEvent e) if(isOpen) monthsize -= 2; if(monthsize=maxMonth) isOpen = true; * 方向改变时,眼睛的改变。 private void initEye() case 0: eyeposx = posx+size/7; eyeposy = posy+size/2-eyesize; break; case 1: eyeposx = posx+size/2; eyeposy = posy+size/7; case 2: eyeposx = posx+size*5/7; eyeposy =

13、 posy+size/2; case 3: eyeposx = posx+size/2-eyesize; default:3.2小鱼的设计小鱼15秒内如果没被吃掉,将在10秒后消失。消失前会闪烁不停。 * (#)fish.FishBean.java 2008-7-31 豆豆类 * 豆豆类 * author Administratorpublic class FishBean implements ActionListener /* 小鱼的位置x */ public int posx = 190; /* 小鱼的位置y */ public int posy = 190; /* 小鱼的大小,以siz

14、e为半径画豆豆(圆)。 public int size = 10; /* 小鱼的当前颜色 */ private Color color = Color.MAGENTA; /* 小鱼的新颜色 */ private Color newColor = Color.MAGENTA; /* 小鱼的旧颜色 */ private Color oldColor = Color.GRAY; /* 小鱼消失时的闪烁时间 */ public static int flickerTime = 350; /* 小鱼消失时的闪烁次数 */ public static int filckerNum = 8; private

15、 int hasFileckedNum = 0; /* 小鱼消失时闪烁的定时器 */ private Timer timer = null; * 缺省构造函数。按位置(40,40),大小15,颜色Color.MAGENTA构造一个豆豆。 public FishBean() this(190,190,10,Color.MAGENTA,Color.GRAY); * 按照位置、大小、颜色构造一个豆豆类。 * param posx 豆豆的水平坐标x。 * param posy 豆豆的垂直坐标y。 * param size 豆豆的大小。 * param newColor 豆豆的颜色。 * param o

16、ldColor 豆豆的旧颜色 public FishBean(int posx,int posy,int size,Color newColor,Color oldColor) this.newColor = newColor; this.oldColor = oldColor; this.color = newColor; timer = new Timer(flickerTime,this); * 移动豆豆到新的位置。 * param posx 豆豆的新水平坐标x。 * param posy 豆豆的新垂直坐标y。 public void newPos(int posx,int posy)

17、* 绘制豆豆。 g.fillOval(posx, posy, size, size); * 停止Timer。 public void stopTimer() color = newColor; timer.stop(); hasFileckedNum = 0; * 启动Timer。 public void runTimer() timer.start(); * 定时器事件。 hasFileckedNum+; if(color.equals(newColor) | color=newColor) color = oldColor; else color = newColor; /定时器运行的次数

18、完成时,停止定时器。 if(hasFileckedNum=filckerNum & timer.isRunning() stopTimer(); * Timer定时器是否运行中。 * return 返回Timer是否运行中。 public boolean timerIsRunning() return timer.isRunning();3.3碰撞检测代替的实现 该游戏并不对大嘴鱼进行碰撞检测。省去了地图绘制过程。利用之前所生成的坐标点集合。大嘴鱼并不对地图边缘进行碰撞检测。 * (#)tools.FishUtilities.java 2008-7-31 tools 检测大嘴鱼和小鱼碰撞类。p

19、ackage tools;import fish.BigMouthFish;import fish.FishBean; * 检测大嘴鱼和小鱼碰撞类。 * 此类练习Math的静态函数的使用。public class FishUtilities * 返回大嘴鱼是否吃掉了小鱼。 * 方式:检测2鱼(圆)之间是否相切或相交。 * 判断2圆心之间的距离小于2圆半径之和。此处判断小于大嘴鱼的半径即可。让大嘴鱼可以吃掉小鱼。 * param fish * param bean * return 返回大鱼是否吃掉小鱼。 public static boolean isInteraction(BigMouthF

20、ish fish,FishBean bean) return Math.pow(fish.posx+fish.size/2-bean.posx-bean.size/2,2)+Math.pow(fish.posy+fish.size/2-bean.posy-bean.size/2, 2)b) t=a;a=b;b=t; t=(int)(Math.ceil(Math.log10(b);/对b向上取整 while(true) n=(int)(Math.random()*Math.pow(10,t);/随机数*10的t次方 if(n=a & n=b) /System.out.println(生成的随机数如下:+n); return n; * 返回0-a的随机数。 * param a 整数a。 * return 返回0-a的随机数。 public static int randomInt(int a) return new Random().nextInt(a);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1