武汉理工大学华夏学院课程设计报告书课程名称:智能手机软件开发题目:飞扬的小鸟系名:信息工程系专业班级:计算机1111姓名:学号: ***************:**2014 年 6 月 22 日武汉理工大学华夏学院信息工程系课程设计任务书课程名称:智能手机软件开发课程设计指导教师:凌伟班级名称:计算机1111 开课系、教研室:自动化与计算机一、课程设计目的与任务本课程的设计的目的是通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。
结合具体的开发案例飞扬的小鸟,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。
二、课程设计的内容与基本要求1、课程设计题目飞扬的小鸟2、课程设计内容要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏飞扬的小鸟,并针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。
《飞扬的小鸟》是由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍,而这只鸟其实是根本不会飞的……所以玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。
游戏玩法:在游戏开始后,点击屏幕,要记住是保持一定的规律的仔细观察点击屏幕,不要让小鸟掉下来。
游戏过程:让小鸟不要撞到管子,每穿过一个管子的缝隙得1分。
游戏背景音乐设计游戏背景动画设计游戏界面设计游戏关卡设计游戏积分榜的设计三、课程设计步骤及时间进度和场地安排本课程设计将安排在第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.1课设设计题目飞扬的小鸟1.2 设计目的⑴通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。
⑵结合具体的开发案例飞扬的小鸟,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。
⑶要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏飞扬的小鸟;⑷针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。
1.3 设计任务及要求⑴设计“飞扬的小鸟”游戏包括:游戏玩法,游戏过程,游戏背景音乐设计,游戏背景动画设计,游戏界面设计,游戏关卡设计,游戏积分榜的设计。
⑵游戏玩法:游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍,而这只鸟其实是根本不会飞的……所以玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。
2软硬件运行环境及开发工具2.1 硬件环境CPU:Pentium 4 3.0以上。
内存:512MB以上。
硬盘:80GB以上。
显示器:1024×768像素以上。
数据库:Access2000以上。
操作系统:Windows XP或更高版本。
2.2软件环境MyElipse、JAVA3游戏总体设计3.1游戏功能简介玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡,具体的功能如下:(1)登录界面按下图标进入游戏;(2)每点击一下屏幕,小鸟飞一下;⑶小鸟要是碰到柱子或者撞到地面就显示游戏结束界面。
3.2游戏的整体流程图图1 游戏的整体流程图4 系统详细设计经过需求分析、功能模块设计之后要进入详细设计阶段,本阶段将按游戏的主要模块进行论述,重在阐述具体的某项功能的实现方法或运用到的相关技术。
4.1游戏背景动画设计代码如下:public static void main(String[] args) {// TODO Auto-generated method stubJFrame win = new JFrame("飞扬的小鸟作者:卢灿");win.setSize(432, 674);win.setLocationRelativeTo(null);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);win.setResizable(false);World world = new World();// 创建一个小鸟活动世界win.add(world);// 把面板(world)添加到可视化窗口界面(win)里面win.setVisible(true);world.action();//让游戏界面动起来}}4.2游戏界面设计代码如下:World world = new World();// 创建一个小鸟活动世界win.add(world);// 把面板(world)添加到可视化窗口界面(win)里面win.setVisible(true);world.action();//让游戏界面动起来4.3游戏关卡设计//游戏输赢的判定,代码如下:if(bird.hit(ground)||bird.hit(c1)||bird.hit(c2)){isGameOver=true;}4.4游戏积分榜的设计代码如下:if(bird.x==c1.x||bird.x==c2.x){//得一分score++;}repaint();//重绘游戏界面try {Thread.sleep(1000/60);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}5 操作说明及运行结果5.1 操作说明⑴游戏玩法:玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。
⑵游戏积分榜的设计:让小鸟不要撞到管子,每穿过一个管子的缝隙得1分。
5.2运行结果登录界面的设计图2 登录界面游戏过程中的界面设计图3 游戏过程中的界面游戏结束时的界面设计图4 游戏结束时的界面6总结在本次课程设计中,我们遇到的困难很多,在解决它们的同时我们又学到了很多,获益非浅,特别是如何分析、建立、开发一个游戏。
在一个游戏开发的过程中编码不是重要的,重要的是分析游戏、建立起游戏模型。
在分析一个游戏前,分析人员必须要对将要开发的游戏所涉及到的各方面知识有一个认识,然后将游戏的模型建立起来。
而且一个成功的游戏要符合用户的需要,要以用户为中心,开发出用户想要的游戏,而不能自以为是,想当然。
在游戏编写中,我们认识到游戏要有简便的界面,完备的文挡。
拥有这些条件,游戏的复杂度才能大大减少,修改代码时更加容易下手。
我认为,所谓良好的界面,就是用户需要的界面,力求简便全面。
所以设计一个界面时,开发人员必须要了解用户的想法,从用户的角度去设计,当然,开发不能全听用户的意见,在详细分析了游戏后,开发人员可以向用户提出一些修改的意见,在双方多次交流后定出游戏所需的功能,以决定界面的实现。
在编码中,良好的编程风格与习惯是提高工作效率的一个重要方面,而且良好的编程风格与习惯也是使软件便于维护的基础。
那如何是良好的编程风格与习惯呢?我们认为主要是程序的模块化、必要的注释和完备的设计文挡三个方面。
所谓模块化就是使程序的功能实现分成多个单独的功能模块,而不能在一大段代码中实现多个功能,如果这样做,别的人是非常难读懂你的程序。
必要的注释,显而易见是要在程序的编写中加入对程序的说明,原因就是为了别人能读懂你的程序,再一段时间后你自己还能读懂自己的程序。
而完备的设计文挡是在系统开发过程中记录下开发的全部过程,拥有它,在以后维护软件时就有依据使维护工作变得简单一些。
总结这次课程设计给我们感受最深的至少有四点:1.进行软游戏件开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。
2.要遵循游戏开发本身的规律和善于吸收已有的经验。
3.要善于同别人交流与合作,善于获取有用的各种资源。
4.要真真实实多查资料,多问,多看。
7参考文献[1] 王建华. ASP NET 2.0 动态网站开发技术与实践[M].北京:电子工业出版社,2007.[2]王珊萨师煊,数据库系统概论(第四版),高等教育出版社,2006[3]萨师煊,SQL Server 从入门到精通,高等教育出版社,2006[4] 周之黄玫译, SQL Server 2000技术参考大全, 清华大学出版社,2001[5]余杰李莎莎,SQLServer项目开发实践,中国铁道出版社,2006附录进入界面设计package com.tarent.flappybird;import javax.swing.JFrame;public class FlappyBird {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubJFrame win = new JFrame("飞扬的小鸟作者:卢灿");win.setSize(432, 674);win.setLocationRelativeTo(null);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);win.setResizable(false);World world = new World();// 创建一个小鸟活动世界win.add(world);// 把面板(world)添加到可视化窗口界面(win)里面win.setVisible(true);world.action();//让游戏界面动起来}}小鸟类package com.tarent.flappybird;import java.awt.image.BufferedImage;import java.io.IOException;import javax.imageio.ImageIO;/**小鸟类*/public class Bird {BufferedImage image;//鸟的图片BufferedImage[] images=new BufferedImage[8];int x;//鸟的中心点int y;int width;//鸟的宽和高int height;double alpha=0;double s;//t秒移动的距离double g=4;double t=0.25;double speed=20;//鸟的速度int index=0;//(让index++%8,赋值给图片的下标)public Bird(){//循环加载鸟的每一张图,存放在images数组里边for(int i=0;i<8;i++){try{images[i]=ImageIO.read(getClass().getResource(i+".png"));}catch(IOException e) {//TODO Auto-generated catch blocke.printStackTrace();}}image=images[0];width=image.getWidth();height=image.getHeight();x=132;//鸟的位置y=280;}public void step(){//x不变,y自由落体double v0=speed;s=v0*t-0.5*g*t*t;y-=s;//y=y-s;speed=v0-g*t;//最后的速度作为鸟的初速度alpha=Math.atan(s/8);//换图片image=images[index++%8];}public void flappy(){speed=20;}/*判断鸟是否碰撞到了地面*/public boolean hit(Ground ground){if(y+height/2>=ground.y){alpha=-3.14/2;//垂直撞地return true;//碰到了地面}return false;}public boolean hit(Column column){//子类重载上面的hit方法,根据参数列表不同,访问//不同的重载方法。