java-捕鱼达人课程设计..doc
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《java-捕鱼达人课程设计..doc》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 捕鱼 课程设计
- 资源描述:
-
1、武汉理工大学华夏学院信息工程系课 程 设 计 任 务 书 三、 课程设计目的与任务 本课程的设计的目的是通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。结合具体的开发案例捕鱼达人,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。二、课程设计的内容与基本要求1、课程设计题目 捕鱼达人2、课程设计内容 要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏捕鱼达人,并针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。 游戏操作 鼠标移动/键盘方向
2、键控制炮台射击方向,点击鼠标左键/按空格键射击撒网抓鱼,点击下方的红色+号和-号按钮/数字键1-8键/方向键键/滑动鼠标滑轮切换炮台游戏背景音乐设计游戏背景动画设计游戏界面设计游戏关卡设计游戏积分榜的设计三、课程设计步骤及时间进度和场地安排本课程设计将安排在第18周, 教育技术中心。具体安排如下:第一天,系统开发平台搭建及主流开发工具安装第二天,游戏界面的设计第三天,游戏业务的设计第四天,游戏关卡的设计 第五天,系统调试 测试 打包和验收周次星期一星期二星期三星期四星期五第18周第1-8节第1-8节第1-8节第1-8节第1-8节地点现教221现教221现教221现教221现教221四、课程设计
3、考核及评分标准课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。具体评分标准如下:设置六个评分点(1)设计方案正确,具有可行性、创新性; 25分(2)系统开发效果较好; 25分(3)态度认真、刻苦钻研、遵守纪律; 10分(4)设计报告规范、课程设计报告质量高、参考文献充分 20分(5)课程设计答辩概念清晰,内容正确 10分(6)课程设计期间的课堂考勤、答疑与统筹考虑。 10分 按上述六项分别记分后求和,总分按五级记分法记载最后成绩。优秀(10090分),良好(8089分),中等(7079分),及格(6069分),不及格(059分)1设计题目
4、12开发环境13需求分析13.1设计目的13.2、设计要求14.概要设计24.1设计原理及其分析24.2本游戏的模块图25.详细设计45.1游戏欢迎界面的设计45.2 游戏背景的设计55.3游戏中鱼的设计65.4 渔网的设计85.5游戏的平衡设计96测试与运行116.1进行游戏测试116.2体力值为零的时弹出对话框。116.3游戏结束后进行选择127心得体会138.参考文献13附录:141设计题目捕鱼达人2开发环境Eclipse软件开发环境,PC机一台,windows操作系统。3需求分析3.1设计目的 捕鱼达人这个项目是一个娱乐性的游戏开发,该游戏可以给人们带来娱乐的同时还可以给人感官上的享受
5、,所以很受人们的欢迎。本次游戏的程序设计包含,java swing组件的合理运用,还有图像的变动达到一个动态的动画效果,线程的运用,游戏的异常处理,等方面的知识。培养学生运用所学知识的基础理论、基本知识和基本技能,分析解决实际问题能力的一个重要环节。它与课堂教学环节彼此配合,相辅相成,在某种程度上是课堂学习的继续、深化和检验。它的实践性和综合性是其它教学环节所不能代替的。课程设计能使学生受到必需的综合训练,在不同程度上提高各种能力。通过课程设计,使学生熟练掌握Java语言课程中所学的理论知识,通过综合Java语言的基本知识来解决实际问题,加强学生分析和解决问题的能力。3.2、设计要求框架:2个
6、场景,WelcomePanel,FishGame。流程:1)WelcomePanel :该场景是专门用来做一个欢迎动画的。 2)FishGame :用来运行游戏的载体窗口。与用户交流的界面,鱼儿在该window窗体上游动,玩家在上面捕鱼,然后计分等等。 4.概要设计4.1设计原理及其分析1.初始化界面需要800*500大小,需要一个游戏开始欢迎界面,游戏框上显示“欢迎捕鱼达人游戏”,3秒之后进入游戏界面,命名为“捕鱼达人”2.在程序中,我们需要对每一条鱼进行操作(移动,游动,捕鱼,死亡,复活),所以每条鱼我们将它定义为一个对象的线程,便于对鱼的完美操作与控制,游戏中我们定义了7种小鱼和4种大鱼
7、,每条鱼都有两条,所以鱼池中有22条鱼,鱼的数量达到了一定的饱和。3.鱼的每次移动,它的水平坐标改变了,所以我们需要将它移动之后的状态重画(repaint()方法)出来,从而达到鱼是在移动的。4.捕鱼的效果,我们被网赋一个能量值,可以改变网的大小,来改变网的能量的大小,而鱼就需要有一个血量值(大鱼的血量高,小鱼血量低),当网在鱼的范围之内的时候,点击鼠标左键让鱼扣除相应的血量值,鼠标右键控制网的大小,点击一下改变一下网的大小,当鱼的血量小于0的时候,鱼就会弹跳几下然后消失,达到捕鱼成功。 5.每个游戏都是需要平衡的,所以我们不能一直捕鱼下去。体力值,计分,捕鱼条数,等数据来平衡游戏。当体力值小
8、于0 的时候就结束游戏,而捕一条鱼,加上相应鱼的分数,而捕鱼条数上就加1,体力值也相应的回复一部分,不同的鱼分数不同,回复体力值也不同,基本上大鱼分数高,小于分数低。最后判定输赢就是看分数的高低。4.2本游戏的模块图分别有:鱼的模块,网的模块,鱼池的模块,游戏的模块,每一个模块相当于一个类,鱼模块:主要实现鱼图片的加载,鱼游动效果,鱼游动,还有鱼的一些基本属性, 比如鱼的坐标,大小,还有血量值。一些基本方法,鱼的构造方法。网模块:主要实现渔网图片的加载,渔网的属性有坐标,大小的宽和高,还有渔网的powe r值,渔网中还有一个改变渔网大小的方法。鱼池模块:将鱼类的对象,网类的对象都在本类中进行调
9、用,并将相应对象的图片显示出来,并将游戏的背景画出来。 欢迎模块:将欢迎的图片加载进来。游戏模块 欢迎模块鱼池模块网模块鱼模块 图4.1系统模块图 图4.2 系统类图5.详细设计5.1游戏欢迎界面的设计创建游戏的运行界面的框架,带有main()函数的类,FishGame.java类,专门用来承载游戏的运行,在主函数中创建JFram类的一个对象,即创建window视窗,然后设置大小,默认居中显示,大小不可以改变等功能,具体代码如下:final JFrame welcome =new JFrame(欢迎光临);welcome.setSize(643,435);welcome.setLocation
10、RelativeTo(null);welcome.setResizable(false);welcome.setVisible(true); 图5.1游戏运行的框架 创建WelcomePanel.java类,专门用来创建画笔(即paint()方法),画出要显示出来的欢迎界面,既然是开始界面,我们还要去掉边框,还要等待几秒钟后才能进入游戏界面。所以王某要创建一个Timer类的一个对象,来合理分配时间上的任务。实现代码如下:在WelcomePanel类中:public class WelcomPanel extends JPanelBufferedImage bg;public WelcomPan
11、el()try bg=ImageIO.read(new File(images/welcome.jpg);/加载本地的图片 catch (IOException e) e.printStackTrace(); public void paint(Graphics g) /g相当于是画笔g.drawImage(bg,0,0,null); /画图片 然后在FishGame类中的main()函数中创建WelcomPanel类的一个对象,将画出来的动画在创建好的JFrame框架上显示出来。具体代码如下:welcome.setUndecorated(true);/隐藏框架,大小不可变WelcomPane
12、l wel=new WelcomPanel();welcome.add(wel);welcome.setVisible(true); /显示显示效果如下: 图5.2欢迎图画显示5.2 游戏背景的设计 创建的Pool.java类要继承JPanel类,用paint()的方法画出游戏运行的效果出来,首先画出游戏的背景出来。具体画出的过程如WelcomPanel类的方法类似。然后再在FishGame.java类中的main()添加如下代码:final JFrame win = new JFrame(捕鱼达人游戏);win.setSize(800,500);win.setLocationRelative
13、To(null);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Pool buyu=new Pool();win.add(buyu);Timer timer = new Timer(); timer.schedule(new TimerTask() public void run() /3秒之后,欢迎界面关闭,游戏窗口打开welcome.setVisible(false); win.setVisible(true);, 3000); buyu.action(); /调用Pool类对象buyu的action()方法 运行后的游戏背景如下图:
14、 图5.3游戏运行背景5.3游戏中鱼的设计创建Fish.java类。在这个类之中,我们要创建鱼的对象,但是为了方便启动每一条鱼,我们将Fish.java的类继承了Thread类,这样,每一条鱼就相当于一个线程,每一个线程我们就可以对它分别进行控制,比如移动,速度,血量,当然还有鱼游动的效果。在玩家所看见鱼儿游动的效果其实就是鱼儿游动的一张张图片在不停的变换。我们所做的鱼儿素材只有静态的图片。根据研究,只要换的图片帧数达到23张每秒我们就会认为图片就是动的 。所以在鱼儿游动的时候我们还要调用Tread.sleep(1000/60)相当于1秒钟换了60张图片。速度上已经相当快了。这里我们在构造方法
15、里面写出BufferedImage类的一个数组对象,将鱼游动的不同图片用缓冲技术将图片加载到游戏中去,加快游戏运行速度,当然由于鱼的类型不同,所以需要写出两个变量出来s1和s2,s1代表不同种类的鱼类,s2代表同一种鱼的不同的游动的样子。将代码写入Fish.javaL类的构造方法中,如下:for(int i=0;i10;i+)imagesi=ImageIO.read(new File(images/fish+s1+_+s2+.png); 该构造函数是一个带参数的构造函数,s1就是传过来的参数,鱼的种类有19种,加上大于2种共11种鱼。鱼的移动,鱼有几个属性如下:x,y代表鱼的左上角的坐标,wi
16、dth,height代表当前鱼的图片的一个宽和高。我们就对这次的实验做一个简单的要求。所有的鱼儿都是从最右边开始的。用一个Random 的随机函数随机出鱼出场的位置:x=random.nextInt(780+width)-width;y=random.nextInt(470+height)-height; speed=random.nextInt(4)+3;/36 这几句代码的意思是随机出鱼出场的位置在右边,且高度不能超过游戏界面的高度,而随机出来的速度,可以使鱼儿游的快与慢。不至于所有的鱼儿以相同频率游动。再写一个step()方法,每Thread.sleep(1000/10)秒,鱼儿就左移一
17、次:x-=speed;图片也相应的换一次image=imagesi+%10; 这里与10取余的意思是我们每一种鱼都有10张游动的图片。当然鱼游出界的时候,鱼儿就重新随机出新的位置来具体实现代码如下:public void run() int i=0;while(true)x-=speed;image=imagesi+%10;/鱼儿每游动一下换一帧图片if(x-width)/如果鱼过了左边界,就出场 getOut();/该方法是用来对鱼的出场处理,给鱼重新随机出新的位置 try Thread.sleep(1000/10); catch (InterruptedException e) e.pri
18、ntStackTrace(); 鱼的类王某已经创建完毕,所以王某接下来就是要在Pool类的piant()方法中画出鱼,在此游戏中,王某把每一条鱼都创建了两次,使得鱼池中的鱼不至于嫌少, 代码如下:for (int i = 0; i fishes.length; i+) Fish f = fishesi;g.drawImage(f.image, f.x, f.y, null); 以上代码中,g相当于是paint方法中的一个画笔,用循环的方法将各种鱼画出来,fishes22数组代表的是22条鱼,即Fish类的一个数组对象(或者线程)。在画板中画出鱼后,王某还要启动该鱼的线程:用for循环将每条鱼的
19、线程启动:fishesi.start(),i取值022。其实这样的话鱼已经可以移动了,但是,在运行出来以后,其实鱼还没动,这是因为,画面定格了,所以我们需要调用系统的repaint()方法,将鱼游动之后的样子画出来,通过不停的重画,使鱼儿游动起来。在Pool类中添加action()方法,用一个死循环,不停的重画,然后线程停顿一下Tread.sleep(1000/10)。最后在FishGame.java中的main()方法中用Pool的对象调用action()方法即可。运行效果如下: 图5.4 在游戏中画出鱼5.4 渔网的设计 创建Net.java类。与创建鱼的方法类似。渔网有x,y,表示渔网左
20、上角的坐标,width,height表示渔网的款和高,power,代表渔网的能量值,渔网的网号鱼大,power值越大。渔网有7中图片,用BufferedImage 的数组将本地的7个渔网图片都加载进来,在构造方法中写如下主要代码:for (int i = 0; i 7; i+)imagesi = ImageIO.read(new File(images/net_ + (i + 1)+ .png); 同样的道理,在Pool类中的piant()方法中画出渔网,if (net.show) g.drawImage(net.image, net.x - net.width / 2, net.y - ne
展开阅读全文