武汉理工大学华夏学院课程设计报告书课程名称:智能手机软件开发题目:捕鱼达人系名:信息工程系专业班级:计算机1112*名:***学号:***************:***2014 年 6 月20 日武汉理工大学华夏学院信息工程系课程设计任务书课程名称:智能手机软件开发课程设计指导教师:凌伟班级名称:计算机1111 开课系、教研室:自动化与计算机三、课程设计目的与任务本课程的设计的目的是通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。
结合具体的开发案例捕鱼达人,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。
二、课程设计的内容与基本要求1、课程设计题目捕鱼达人2、课程设计内容要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏捕鱼达人,并针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。
游戏操作鼠标移动/键盘方向键←→控制炮台射击方向,点击鼠标左键/按空格键射击撒网抓鱼,点击下方的红色+号和-号按钮/数字键1-8键/方向键↑键/滑动鼠标滑轮切换炮台游戏背景音乐设计游戏背景动画设计游戏界面设计游戏关卡设计游戏积分榜的设计三、课程设计步骤及时间进度和场地安排本课程设计将安排在第18周, 教育技术中心。
具体安排如下:第一天,系统开发平台搭建及主流开发工具安装第二天,游戏界面的设计第三天,游戏业务的设计第四天,游戏关卡的设计第五天,系统调试测试打包和验收四、课程设计考核及评分标准课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。
具体评分标准如下:设置六个评分点(1)设计方案正确,具有可行性、创新性;25分(2)系统开发效果较好;25分(3)态度认真、刻苦钻研、遵守纪律;10分(4)设计报告规范、课程设计报告质量高、参考文献充分20分(5)课程设计答辩概念清晰,内容正确10分(6)课程设计期间的课堂考勤、答疑与统筹考虑。
10分按上述六项分别记分后求和,总分按五级记分法记载最后成绩。
优秀(100~90分),良好(80~89分),中等(70~79分),及格(60~69分),不及格(0~59分)1.设计题目 (1)2.开发环境 (1)3.需求分析 (1)3.1设计目的 (1)3.2、设计要求 (1)4.概要设计 (2)4.1设计原理及其分析 (2)4.2本游戏的模块图 (2)5.详细设计 (4)5.1游戏欢迎界面的设计 (4)5.2 游戏背景的设计 (5)5.3游戏中鱼的设计 (6)5.4 渔网的设计 (8)5.5游戏的平衡设计 (9)6.测试与运行 (11)6.1进行游戏测试 (11)6.2体力值为零的时弹出对话框。
(11)6.3游戏结束后进行选择 (12)7.心得体会 (13)8.参考文献 (13)附录: (14)1.设计题目捕鱼达人2.开发环境Eclipse软件开发环境,PC机一台,windows操作系统。
3.需求分析3.1设计目的捕鱼达人这个项目是一个娱乐性的游戏开发,该游戏可以给人们带来娱乐的同时还可以给人感官上的享受,所以很受人们的欢迎。
本次游戏的程序设计包含,java swing组件的合理运用,还有图像的变动达到一个动态的动画效果,线程的运用,游戏的异常处理,等方面的知识。
培养学生运用所学知识的基础理论、基本知识和基本技能,分析解决实际问题能力的一个重要环节。
它与课堂教学环节彼此配合,相辅相成,在某种程度上是课堂学习的继续、深化和检验。
它的实践性和综合性是其它教学环节所不能代替的。
课程设计能使学生受到必需的综合训练,在不同程度上提高各种能力。
通过课程设计,使学生熟练掌握Java语言课程中所学的理论知识,通过综合Java语言的基本知识来解决实际问题,加强学生分析和解决问题的能力。
3.2、设计要求框架:2个场景,WelcomePanel,FishGame。
流程:1)WelcomePanel :该场景是专门用来做一个欢迎动画的。
2)FishGame :用来运行游戏的载体窗口。
与用户交流的界面,鱼儿在该window窗体上游动,玩家在上面捕鱼,然后计分等等。
4.概要设计4.1设计原理及其分析1.初始化界面需要800*500大小,需要一个游戏开始欢迎界面,游戏框上显示“欢迎捕鱼达人游戏”,3秒之后进入游戏界面,命名为“捕鱼达人”2.在程序中,我们需要对每一条鱼进行操作(移动,游动,捕鱼,死亡,复活),所以每条鱼我们将它定义为一个对象的线程,便于对鱼的完美操作与控制,游戏中我们定义了7种小鱼和4种大鱼,每条鱼都有两条,所以鱼池中有22条鱼,鱼的数量达到了一定的饱和。
3.鱼的每次移动,它的水平坐标改变了,所以我们需要将它移动之后的状态重画(repaint ()方法)出来,从而达到鱼是在移动的。
4.捕鱼的效果,我们被网赋一个能量值,可以改变网的大小,来改变网的能量的大小,而鱼就需要有一个血量值(大鱼的血量高,小鱼血量低),当网在鱼的范围之内的时候,点击鼠标左键让鱼扣除相应的血量值,鼠标右键控制网的大小,点击一下改变一下网的大小,当鱼的血量小于0的时候,鱼就会弹跳几下然后消失,达到捕鱼成功。
5.每个游戏都是需要平衡的,所以我们不能一直捕鱼下去。
体力值,计分,捕鱼条数,等数据来平衡游戏。
当体力值小于0 的时候就结束游戏,而捕一条鱼,加上相应鱼的分数,而捕鱼条数上就加1,体力值也相应的回复一部分,不同的鱼分数不同,回复体力值也不同,基本上大鱼分数高,小于分数低。
最后判定输赢就是看分数的高低。
4.2本游戏的模块图分别有:鱼的模块,网的模块,鱼池的模块,游戏的模块,每一个模块相当于一个类,鱼模块:主要实现鱼图片的加载,鱼游动效果,鱼游动,还有鱼的一些基本属性,比如鱼的坐标,大小,还有血量值。
一些基本方法,鱼的构造方法。
网模块:主要实现渔网图片的加载,渔网的属性有坐标,大小的宽和高,还有渔网的powe r值,渔网中还有一个改变渔网大小的方法。
鱼池模块:将鱼类的对象,网类的对象都在本类中进行调用,并将相应对象的图片显示出来,并将游戏的背景‘画’出来。
欢迎模块:将欢迎的图片加载进来。
图4.1系统模块图图4.2 系统类图游戏模块鱼 模 块 网 模 块鱼 池 模 块 欢 迎 模 块5.详细设计5.1游戏欢迎界面的设计创建游戏的运行界面的框架,带有main()函数的类,FishGame.java类,专门用来承载游戏的运行,在主函数中创建JFram类的一个对象,即创建window视窗,然后设置大小,默认居中显示,大小不可以改变等功能,具体代码如下:final JFrame welcome =new JFrame("欢迎光临");welcome.setSize(643,435);welcome.setLocationRelativeTo(null);welcome.setResizable(false);welcome.setVisible(true);图5.1游戏运行的框架创建WelcomePanel.java类,专门用来创建‘画笔’(即paint()方法),画出要显示出来的欢迎界面,既然是开始界面,我们还要去掉边框,还要等待几秒钟后才能进入游戏界面。
所以王某要创建一个Timer类的一个对象,来合理分配时间上的任务。
实现代码如下:在WelcomePanel类中:public class WelcomPanel extends JPanel{BufferedImage bg;public WelcomPanel(){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);//隐藏框架,大小不可变WelcomPanel 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.setLocationRelativeTo(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()方法运行后的游戏背景如下图:图5.3游戏运行背景5.3游戏中鱼的设计创建Fish.java类。
在这个类之中,我们要创建鱼的对象,但是为了方便启动每一条鱼,我们将Fish.java的类继承了Thread类,这样,每一条鱼就相当于一个线程,每一个线程我们就可以对它分别进行控制,比如移动,速度,血量,当然还有鱼游动的效果。
在玩家所看见鱼儿游动的效果其实就是鱼儿游动的一张张图片在不停的变换。
我们所做的鱼儿素材只有静态的图片。
根据研究,只要换的图片帧数达到23张每秒我们就会认为图片就是动的。
所以在鱼儿游动的时候我们还要调用Tread.sleep(1000/60)相当于1秒钟换了60张图片。
速度上已经相当快了。
这里我们在构造方法里面写出BufferedImage类的一个数组对象,将鱼游动的不同图片用缓冲技术将图片加载到游戏中去,加快游戏运行速度,当然由于鱼的类型不同,所以需要写出两个变量出来s1和s2,s1代表不同种类的鱼类,s2代表同一种鱼的不同的游动的样子。