- 164.50 KB
- 16页
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'滨江学院《Java程序设计》实习报告题目大嘴鱼游戏专业计算机科学与技术年级班级计科2学号20112308053学生姓名刘松学期2015-2016任课教师方忠进1
1项目简介1.1项目意义实现小时候PC上经典游戏,大嘴鱼。练习JAVA基础技能。掌握图片绘制方法,刷新方法。以及多线程的使用,文件读取与操作,字符串的分析等诸多技能。完成课程设计。1.2项目说明大嘴鱼游戏规则介绍:无需开始,使用键盘的上,下,左,右键控制大嘴鱼的方向,每吃1条小鱼,得分加1分。每吃10条小鱼,大嘴鱼将升级:大小加1,速度加2。游戏操作:启动系统,游戏开始,按上下左右键控制大嘴鱼的移动方向。1.3关键技术本项目采用JAVA编程语言进行开发。使用JFrame做窗体,Graphice做画笔绘制图形。其中关键技术包括:1、画面的绘制与更新。2、小鱼自动刷新的设计。3、大嘴鱼方向的控制。14
4、小鱼被吃掉以及碰撞的检测。5、更新大嘴鱼得到的分数。6、地图的生成与制作7、地图集的解析8、碰撞检测的代替2总体设计2.1主类设计主类界面类小鱼大嘴鱼资源类地图类行走路径类2.2游戏功能的设计大嘴鱼在吃到小鱼后会升级,速度加快。每吃10条小鱼,大嘴鱼将升级:大小加1,速度加2。14
3详细设计与实现3.1大嘴鱼的设计首先生成创建imgae,获取image的画笔Graphics,利用Graphics完成游戏界面的绘制。Food类的绘制,遍历Food集合,向Food类的paint方法传入画笔。绘制大嘴鱼,小鱼。Food对象用自身方法绘制自己。另绘制积分字段,根据游戏时长绘制游戏状态。最后讲image画入Frame中,完成界面的绘制过程。Frame继承了Runnable方法,在其run方法中,每30毫秒,调用repaint方法,重绘场景,完成地图场景的刷新。/***@(#)fish.BigMouthFish.java2008-7-31*CopyRightInformation:Tarena*Project:fish*JDKversionused:jdk1.6.4*Comments:大嘴鱼类*Version:1.0*SrDateModifiedByWhy&Whatismodified*1.2008-7-31小猪新建**/packagefish;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.Timer;/***大嘴鱼类
*此类继承AcitonListener,实现AcitonPerformed方法,练习ActionListener的另一种实现方法
*此类还练习定时器Timer的使用
*此类还练习图形类Graphics的使用
14 *2008-7-31*@author达内科技[TarenaTrainingGroup]*@version1.0*@sinceJDK1.6(建议)*/publicclassBigMouthFishimplementsActionListener{/**大嘴鱼嘴的方向:0-上*/publicstaticintUP=0;/**大嘴鱼嘴的方向:1-右*/publicstaticintRIGHT=1;/**大嘴鱼嘴的方向:2-下*/publicstaticintDOWN=2;/**大嘴鱼嘴的方向:3-左*/publicstaticintLEFT=3;/**大嘴鱼的身体大小,以size为半径画圆*/publicintsize=50;/**大嘴鱼现在的方向(以嘴的方向为基准)*/publicintdirection=RIGHT;/**大嘴鱼身体的颜色*/privateColorcolor=Color.CYAN;/**大嘴鱼的位置x*/publicintposx=80;/**大嘴鱼的位置y*/publicintposy=80;/**大嘴鱼的速度,鱼每次前进的像素*/publicintspeed=4;/**大嘴鱼眼睛的大小*/privateinteyesize=size/5;/**大嘴鱼眼睛的位置x*/privateinteyeposx=posx+size/2;/**大嘴鱼眼睛的位置y*/privateinteyeposy=posy+size/5;/**大嘴鱼眼睛的颜色*/privateColoreyecolor=Color.RED;/**大嘴鱼嘴的最大角度的一半*/privateintmaxMonth=30;/**大嘴鱼现在嘴角的角度*/privateintmonthsize=30;/**大嘴鱼的嘴是否张开*/privatebooleanisOpen=true;privateTimertime=null;/***大嘴鱼缺省构造函数.
*14 创建一个位置为(200,200),大小为50,方向为右,颜色为Color.CYAN,速度为10的大嘴鱼*/publicBigMouthFish(){//this的使用。this(200,200,50,RIGHT,Color.CYAN,4);}/***根据位置、大小、方向、颜色、速度构造一个大嘴鱼。*@paramposx大嘴鱼的位置x。*@paramposy大嘴鱼的位置y。*@paramsize大嘴鱼的大小。*@paramdirection大嘴鱼的方向:0-上;1-右;2-下;3-左。出入错误时,默认改为1。*@paramcolor大嘴鱼的颜色。*@paramspeed大嘴鱼的速度。*/publicBigMouthFish(intposx,intposy,intsize,intdirection,Colorcolor,intspeed){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=newTimer(FishPool.reTime,this);time.start();}/***大嘴鱼移动。根据鱼的方向移动鱼。*/publicvoidmove(){switch(direction){case0:posy--;break;case1:posx++;break;case2:14 posy++;break;case3:posx--;break;default:break;}}/***改变大嘴鱼身体的颜色。*@paramcolor欲改变大嘴鱼身体的颜色*/publicvoidchangeColor(Colorcolor){this.color=color;}/***改变大嘴鱼的方向*@paramdirection欲改变大嘴鱼的方向*/publicvoidchangeDir(intdirection){this.direction=direction;}/***使用画笔绘画大嘴鱼.大嘴鱼的头像:一个扇形的是鱼脸,上面有一个小圆是眼睛
*1.保存画笔颜色
*2.绘制大嘴鱼的脸
*3.绘制大嘴鱼的眼睛
*4.恢复画笔颜色
*@paramg画笔*/publicvoidpaint(Graphicsg){//保存画笔的颜色Colorc=g.getColor();//绘制鱼脸g.setColor(color);//从(posx,posy)点开始,绘制宽为size,高为size,开始角度为(direction%2==0?(direction+1):(direction-1))*90+monthsize,弧度为360-2*maxMonth的弧形g.fillArc(posx,posy,size,size,(direction%2==0?(direction+1):(direction-1))*90+monthsize,360-2*monthsize);//绘制鱼眼14 initEye();g.setColor(eyecolor);g.fillOval(eyeposx,eyeposy,eyesize,eyesize);//恢复画笔颜色g.setColor(c);}/***大嘴鱼张嘴闭嘴事件
*此处只负责鱼的角度的变化,不负责鱼的重绘。*重绘在鱼池中实现。
*这样的好处:保证鱼的绘制和步伐分开。显示层和逻辑层单独处理。(面向对象的责任问题)。*@parame事件对象*/publicvoidactionPerformed(ActionEvente){if(isOpen){monthsize-=2;if(monthsize<=0)isOpen=false;}else{monthsize+=2;if(monthsize>=maxMonth)isOpen=true;}}/***方向改变时,眼睛的改变。*/privatevoidinitEye(){switch(direction){case0:eyeposx=posx+size/7;eyeposy=posy+size/2-eyesize;break;case1:eyeposx=posx+size/2;eyeposy=posy+size/7;break;case2:eyeposx=posx+size*5/7;eyeposy=posy+size/2;break;case3:14 eyeposx=posx+size/2-eyesize;eyeposy=posy+size/7;break;default:break;}}}3.2小鱼的设计小鱼15秒内如果没被吃掉,将在10秒后消失。消失前会闪烁不停。/***@(#)fish.FishBean.java2008-7-31*CopyRightInformation:Tarena*Project:fish*JDKversionused:jdk1.6.4*Comments:豆豆类*Version:1.0*SrDateModifiedByWhy&Whatismodified*1.2008-7-31小猪新建**/packagefish;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.Timer;/***豆豆类*2008-7-31*@author达内科技[TarenaTrainingGroup]*@version1.0*@sinceJDK1.6(建议)*@authorAdministrator*/publicclassFishBeanimplementsActionListener{/**小鱼的位置x*/publicintposx=190;14 /**小鱼的位置y*/publicintposy=190;/**小鱼的大小,以size为半径画豆豆(圆)。*/publicintsize=10;/**小鱼的当前颜色*/privateColorcolor=Color.MAGENTA;/**小鱼的新颜色*/privateColornewColor=Color.MAGENTA;/**小鱼的旧颜色*/privateColoroldColor=Color.GRAY;/**小鱼消失时的闪烁时间*/publicstaticintflickerTime=350;/**小鱼消失时的闪烁次数*/publicstaticintfilckerNum=8;privateinthasFileckedNum=0;/**小鱼消失时闪烁的定时器*/privateTimertimer=null;/***缺省构造函数。按位置(40,40),大小15,颜色Color.MAGENTA构造一个豆豆。*/publicFishBean(){this(190,190,10,Color.MAGENTA,Color.GRAY);}/***按照位置、大小、颜色构造一个豆豆类。*@paramposx豆豆的水平坐标x。*@paramposy豆豆的垂直坐标y。*@paramsize豆豆的大小。*@paramnewColor豆豆的颜色。*@paramoldColor豆豆的旧颜色*/publicFishBean(intposx,intposy,intsize,ColornewColor,ColoroldColor){this.posx=posx;this.posy=posy;this.size=size;this.newColor=newColor;this.oldColor=oldColor;this.color=newColor;timer=newTimer(flickerTime,this);14 }/***移动豆豆到新的位置。*@paramposx豆豆的新水平坐标x。*@paramposy豆豆的新垂直坐标y。*/publicvoidnewPos(intposx,intposy){this.posx=posx;this.posy=posy;}/***绘制豆豆。*@paramg画笔*/publicvoidpaint(Graphicsg){Colorc=g.getColor();g.setColor(color);g.fillOval(posx,posy,size,size);g.setColor(c);}/***停止Timer。*/publicvoidstopTimer(){color=newColor;timer.stop();hasFileckedNum=0;}/***启动Timer。*/publicvoidrunTimer(){timer.start();}/***定时器事件。*/publicvoidactionPerformed(ActionEvente){hasFileckedNum++;14 if(color.equals(newColor)||color==newColor)color=oldColor;elsecolor=newColor;//定时器运行的次数完成时,停止定时器。if(hasFileckedNum==filckerNum&&timer.isRunning()){stopTimer();}}/***Timer定时器是否运行中。*@return返回Timer是否运行中。*/publicbooleantimerIsRunning(){returntimer.isRunning();}}3.3碰撞检测代替的实现该游戏并不对大嘴鱼进行碰撞检测。省去了地图绘制过程。利用之前所生成的坐标点集合。大嘴鱼并不对地图边缘进行碰撞检测。/***@(#)tools.FishUtilities.java2008-7-31*CopyRightInformation:Tarena*Project:tools*JDKversionused:jdk1.6.4*Comments:检测大嘴鱼和小鱼碰撞类。*Version:1.0*SrDateModifiedByWhy&Whatismodified*1.2008-7-31小猪新建**/packagetools;14 importfish.BigMouthFish;importfish.FishBean;/***检测大嘴鱼和小鱼碰撞类。
*此类练习Math的静态函数的使用。*2008-7-31*@author达内科技[TarenaTrainingGroup]*@version1.0*@sinceJDK1.6(建议)*@authorAdministrator*/publicclassFishUtilities{/***返回大嘴鱼是否吃掉了小鱼。
*方式:检测2鱼(圆)之间是否相切或相交。
*判断2圆心之间的距离小于2圆半径之和。此处判断小于大嘴鱼的半径即可。让大嘴鱼可以吃掉小鱼。*@paramfish*@parambean*@return返回大鱼是否吃掉小鱼。*/publicstaticbooleanisInteraction(BigMouthFishfish,FishBeanbean){returnMath.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)<=Math.pow(fish.size/2,2);}}14 大嘴鱼移动的时候,先改变tx、ty临时坐标,判断临时坐标是否在坐标集中。如果在,将临时坐标赋予坐标。否则恢复临时坐标,将无法移动。3.4随机出现小鱼的实现小鱼被大鱼吃掉后将会随机刷新在地图的某一个地点。/***@(#)RandomUtil.java2008.07.01*CopyRightInformation:Tarena*Project:DataCollectorSys_Client*JDKversionused:jdk1.6.4*Comments:数学类-随机数生成类*Version:1.0*SrDateModifiedByWhy&Whatismodified*1.2007.07.17小猪新建**/packagetools;importjava.util.Random;/***数学类-随机数生成类*2008-07-16*@author达内科技[TarenaTrainingGroup]*@version1.0*@sinceJDK1.6(建议)*/publicclassRandomUtil{/***生成a-b的随机数*@parama整数a*@paramb整数b*@returna-b的随机数*/publicstaticintrandomInt(inta,intb){intt,n=0;if(a>b){t=a;a=b;b=t;}t=(int)(Math.ceil(Math.log10(b)));//对b向上取整14 while(true){n=(int)(Math.random()*Math.pow(10,t));//随机数*10的t次方if(n>=a&&n<=b)break;}//System.out.println("生成的随机数如下:"+n);returnn;}/***返回0-a的随机数。*@parama整数a。*@return返回0-a的随机数。*/publicstaticintrandomInt(inta){returnnewRandom().nextInt(a);}}4项目截图4.1主界面14 4.2游戏积分5结论在整个系统的需求分析过程中对开发前期工作地流程步骤有了深入的掌握;在开发过程我进一步学习了Java的基础语法,在整个系统开发的过程中,我学到了很大新的知识,前学过的许多知识点在运用过程中也有了更为深入的分析。并且同时更加熟练使用工具MyEclipse。最初对系统没有一个完整的概貌,考虑不是很全面,所以系统功能实现时,碰到不少困难,但是我还是学习到了很多的技术性的知识。在进行了一番全面的详细设计以后,设计思路也更加明确。在以后的开发设计中,我要学会进行详细设计后再开始代码的编写。对程序结构进行分析,用软件工程的知识进行软件开发。同时,要认真学习JAVA基础知识,基础扎实,才能开发更完善的程序。参考资料:[1].张桂珠,刘丽,陈爱国Java面向对象程序设计(第2版)北京邮电大学出版社[2]毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2007年[3]王国辉宋禹蒙等.《java开发实战》.清华大学出版社,2012.9.1.14'
*此类继承AcitonListener,实现AcitonPerformed方法,练习ActionListener的另一种实现方法
*此类还练习定时器Timer的使用
*此类还练习图形类Graphics的使用
14 *2008-7-31*@author达内科技[TarenaTrainingGroup]*@version1.0*@sinceJDK1.6(建议)*/publicclassBigMouthFishimplementsActionListener{/**大嘴鱼嘴的方向:0-上*/publicstaticintUP=0;/**大嘴鱼嘴的方向:1-右*/publicstaticintRIGHT=1;/**大嘴鱼嘴的方向:2-下*/publicstaticintDOWN=2;/**大嘴鱼嘴的方向:3-左*/publicstaticintLEFT=3;/**大嘴鱼的身体大小,以size为半径画圆*/publicintsize=50;/**大嘴鱼现在的方向(以嘴的方向为基准)*/publicintdirection=RIGHT;/**大嘴鱼身体的颜色*/privateColorcolor=Color.CYAN;/**大嘴鱼的位置x*/publicintposx=80;/**大嘴鱼的位置y*/publicintposy=80;/**大嘴鱼的速度,鱼每次前进的像素*/publicintspeed=4;/**大嘴鱼眼睛的大小*/privateinteyesize=size/5;/**大嘴鱼眼睛的位置x*/privateinteyeposx=posx+size/2;/**大嘴鱼眼睛的位置y*/privateinteyeposy=posy+size/5;/**大嘴鱼眼睛的颜色*/privateColoreyecolor=Color.RED;/**大嘴鱼嘴的最大角度的一半*/privateintmaxMonth=30;/**大嘴鱼现在嘴角的角度*/privateintmonthsize=30;/**大嘴鱼的嘴是否张开*/privatebooleanisOpen=true;privateTimertime=null;/***大嘴鱼缺省构造函数.
*14 创建一个位置为(200,200),大小为50,方向为右,颜色为Color.CYAN,速度为10的大嘴鱼*/publicBigMouthFish(){//this的使用。this(200,200,50,RIGHT,Color.CYAN,4);}/***根据位置、大小、方向、颜色、速度构造一个大嘴鱼。*@paramposx大嘴鱼的位置x。*@paramposy大嘴鱼的位置y。*@paramsize大嘴鱼的大小。*@paramdirection大嘴鱼的方向:0-上;1-右;2-下;3-左。出入错误时,默认改为1。*@paramcolor大嘴鱼的颜色。*@paramspeed大嘴鱼的速度。*/publicBigMouthFish(intposx,intposy,intsize,intdirection,Colorcolor,intspeed){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=newTimer(FishPool.reTime,this);time.start();}/***大嘴鱼移动。根据鱼的方向移动鱼。*/publicvoidmove(){switch(direction){case0:posy--;break;case1:posx++;break;case2:14 posy++;break;case3:posx--;break;default:break;}}/***改变大嘴鱼身体的颜色。*@paramcolor欲改变大嘴鱼身体的颜色*/publicvoidchangeColor(Colorcolor){this.color=color;}/***改变大嘴鱼的方向*@paramdirection欲改变大嘴鱼的方向*/publicvoidchangeDir(intdirection){this.direction=direction;}/***使用画笔绘画大嘴鱼.大嘴鱼的头像:一个扇形的是鱼脸,上面有一个小圆是眼睛
*1.保存画笔颜色
*2.绘制大嘴鱼的脸
*3.绘制大嘴鱼的眼睛
*4.恢复画笔颜色
*@paramg画笔*/publicvoidpaint(Graphicsg){//保存画笔的颜色Colorc=g.getColor();//绘制鱼脸g.setColor(color);//从(posx,posy)点开始,绘制宽为size,高为size,开始角度为(direction%2==0?(direction+1):(direction-1))*90+monthsize,弧度为360-2*maxMonth的弧形g.fillArc(posx,posy,size,size,(direction%2==0?(direction+1):(direction-1))*90+monthsize,360-2*monthsize);//绘制鱼眼14 initEye();g.setColor(eyecolor);g.fillOval(eyeposx,eyeposy,eyesize,eyesize);//恢复画笔颜色g.setColor(c);}/***大嘴鱼张嘴闭嘴事件
*此处只负责鱼的角度的变化,不负责鱼的重绘。*重绘在鱼池中实现。
*这样的好处:保证鱼的绘制和步伐分开。显示层和逻辑层单独处理。(面向对象的责任问题)。*@parame事件对象*/publicvoidactionPerformed(ActionEvente){if(isOpen){monthsize-=2;if(monthsize<=0)isOpen=false;}else{monthsize+=2;if(monthsize>=maxMonth)isOpen=true;}}/***方向改变时,眼睛的改变。*/privatevoidinitEye(){switch(direction){case0:eyeposx=posx+size/7;eyeposy=posy+size/2-eyesize;break;case1:eyeposx=posx+size/2;eyeposy=posy+size/7;break;case2:eyeposx=posx+size*5/7;eyeposy=posy+size/2;break;case3:14 eyeposx=posx+size/2-eyesize;eyeposy=posy+size/7;break;default:break;}}}3.2小鱼的设计小鱼15秒内如果没被吃掉,将在10秒后消失。消失前会闪烁不停。/***@(#)fish.FishBean.java2008-7-31*CopyRightInformation:Tarena*Project:fish*JDKversionused:jdk1.6.4*Comments:豆豆类*Version:1.0*SrDateModifiedByWhy&Whatismodified*1.2008-7-31小猪新建**/packagefish;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.Timer;/***豆豆类*2008-7-31*@author达内科技[TarenaTrainingGroup]*@version1.0*@sinceJDK1.6(建议)*@authorAdministrator*/publicclassFishBeanimplementsActionListener{/**小鱼的位置x*/publicintposx=190;14 /**小鱼的位置y*/publicintposy=190;/**小鱼的大小,以size为半径画豆豆(圆)。*/publicintsize=10;/**小鱼的当前颜色*/privateColorcolor=Color.MAGENTA;/**小鱼的新颜色*/privateColornewColor=Color.MAGENTA;/**小鱼的旧颜色*/privateColoroldColor=Color.GRAY;/**小鱼消失时的闪烁时间*/publicstaticintflickerTime=350;/**小鱼消失时的闪烁次数*/publicstaticintfilckerNum=8;privateinthasFileckedNum=0;/**小鱼消失时闪烁的定时器*/privateTimertimer=null;/***缺省构造函数。按位置(40,40),大小15,颜色Color.MAGENTA构造一个豆豆。*/publicFishBean(){this(190,190,10,Color.MAGENTA,Color.GRAY);}/***按照位置、大小、颜色构造一个豆豆类。*@paramposx豆豆的水平坐标x。*@paramposy豆豆的垂直坐标y。*@paramsize豆豆的大小。*@paramnewColor豆豆的颜色。*@paramoldColor豆豆的旧颜色*/publicFishBean(intposx,intposy,intsize,ColornewColor,ColoroldColor){this.posx=posx;this.posy=posy;this.size=size;this.newColor=newColor;this.oldColor=oldColor;this.color=newColor;timer=newTimer(flickerTime,this);14 }/***移动豆豆到新的位置。*@paramposx豆豆的新水平坐标x。*@paramposy豆豆的新垂直坐标y。*/publicvoidnewPos(intposx,intposy){this.posx=posx;this.posy=posy;}/***绘制豆豆。*@paramg画笔*/publicvoidpaint(Graphicsg){Colorc=g.getColor();g.setColor(color);g.fillOval(posx,posy,size,size);g.setColor(c);}/***停止Timer。*/publicvoidstopTimer(){color=newColor;timer.stop();hasFileckedNum=0;}/***启动Timer。*/publicvoidrunTimer(){timer.start();}/***定时器事件。*/publicvoidactionPerformed(ActionEvente){hasFileckedNum++;14 if(color.equals(newColor)||color==newColor)color=oldColor;elsecolor=newColor;//定时器运行的次数完成时,停止定时器。if(hasFileckedNum==filckerNum&&timer.isRunning()){stopTimer();}}/***Timer定时器是否运行中。*@return返回Timer是否运行中。*/publicbooleantimerIsRunning(){returntimer.isRunning();}}3.3碰撞检测代替的实现该游戏并不对大嘴鱼进行碰撞检测。省去了地图绘制过程。利用之前所生成的坐标点集合。大嘴鱼并不对地图边缘进行碰撞检测。/***@(#)tools.FishUtilities.java2008-7-31*CopyRightInformation:Tarena*Project:tools*JDKversionused:jdk1.6.4*Comments:检测大嘴鱼和小鱼碰撞类。*Version:1.0*SrDateModifiedByWhy&Whatismodified*1.2008-7-31小猪新建**/packagetools;14 importfish.BigMouthFish;importfish.FishBean;/***检测大嘴鱼和小鱼碰撞类。
*此类练习Math的静态函数的使用。*2008-7-31*@author达内科技[TarenaTrainingGroup]*@version1.0*@sinceJDK1.6(建议)*@authorAdministrator*/publicclassFishUtilities{/***返回大嘴鱼是否吃掉了小鱼。
*方式:检测2鱼(圆)之间是否相切或相交。
*判断2圆心之间的距离小于2圆半径之和。此处判断小于大嘴鱼的半径即可。让大嘴鱼可以吃掉小鱼。*@paramfish*@parambean*@return返回大鱼是否吃掉小鱼。*/publicstaticbooleanisInteraction(BigMouthFishfish,FishBeanbean){returnMath.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)<=Math.pow(fish.size/2,2);}}14 大嘴鱼移动的时候,先改变tx、ty临时坐标,判断临时坐标是否在坐标集中。如果在,将临时坐标赋予坐标。否则恢复临时坐标,将无法移动。3.4随机出现小鱼的实现小鱼被大鱼吃掉后将会随机刷新在地图的某一个地点。/***@(#)RandomUtil.java2008.07.01*CopyRightInformation:Tarena*Project:DataCollectorSys_Client*JDKversionused:jdk1.6.4*Comments:数学类-随机数生成类*Version:1.0*SrDateModifiedByWhy&Whatismodified*1.2007.07.17小猪新建**/packagetools;importjava.util.Random;/***数学类-随机数生成类*2008-07-16*@author达内科技[TarenaTrainingGroup]*@version1.0*@sinceJDK1.6(建议)*/publicclassRandomUtil{/***生成a-b的随机数*@parama整数a*@paramb整数b*@returna-b的随机数*/publicstaticintrandomInt(inta,intb){intt,n=0;if(a>b){t=a;a=b;b=t;}t=(int)(Math.ceil(Math.log10(b)));//对b向上取整14 while(true){n=(int)(Math.random()*Math.pow(10,t));//随机数*10的t次方if(n>=a&&n<=b)break;}//System.out.println("生成的随机数如下:"+n);returnn;}/***返回0-a的随机数。*@parama整数a。*@return返回0-a的随机数。*/publicstaticintrandomInt(inta){returnnewRandom().nextInt(a);}}4项目截图4.1主界面14 4.2游戏积分5结论在整个系统的需求分析过程中对开发前期工作地流程步骤有了深入的掌握;在开发过程我进一步学习了Java的基础语法,在整个系统开发的过程中,我学到了很大新的知识,前学过的许多知识点在运用过程中也有了更为深入的分析。并且同时更加熟练使用工具MyEclipse。最初对系统没有一个完整的概貌,考虑不是很全面,所以系统功能实现时,碰到不少困难,但是我还是学习到了很多的技术性的知识。在进行了一番全面的详细设计以后,设计思路也更加明确。在以后的开发设计中,我要学会进行详细设计后再开始代码的编写。对程序结构进行分析,用软件工程的知识进行软件开发。同时,要认真学习JAVA基础知识,基础扎实,才能开发更完善的程序。参考资料:[1].张桂珠,刘丽,陈爱国Java面向对象程序设计(第2版)北京邮电大学出版社[2]毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2007年[3]王国辉宋禹蒙等.《java开发实战》.清华大学出版社,2012.9.1.14'
您可能关注的文档
- 思源重庆龙湖春森彼岸项目报告
- 北京汇源集团x城食品饮料有限公司建设项目报告表
- 基于GSM的家庭报警及电器控制系统实验室开放项目报告
- 动态称重系统项目报告(=计量=)
- 2013年版中国差速器总成项目报告
- 《午夜之前》电影剧本翻译项目报告
- 2011年第十三届中国高新技术成果交易会项目报告
- 2014-2015下学年度项目报告-模板
- ipmpb级项目经理项目报告书编写指南
- “智能家居”项目报告书
- 《中学生中外文明礼仪教育》子项目报告
- 公共关系学项目报告
- 南昌吉尼斯两段式煤气发生炉项目报告书
- 嘉兴地区工程项目报告清单1
- 地贫项目报告信息及指标解释
- 基层党建工作创新探索型项目报告
- 大学生自主创业项目报告书
- 如何做好项目报告2014-05-24