智能手机软件开发-飞扬的小鸟.doc_第1页
智能手机软件开发-飞扬的小鸟.doc_第2页
智能手机软件开发-飞扬的小鸟.doc_第3页
智能手机软件开发-飞扬的小鸟.doc_第4页
智能手机软件开发-飞扬的小鸟.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学华夏学院课程设计报告书课程名称: 智能手机软件开发 题 目: 飞 扬 的 小 鸟 系 名: 信息工程系 专业班级: 计算机1111 姓 名: 学 号: 10210411131 指导教师: 凌伟 2014 年 6 月 22 日武汉理工大学华夏学院信息工程系课 程 设 计 任 务 书课程名称:智能手机软件开发课程设计 指导教师: 凌伟 班级名称: 计算机1111 开课系、教研室: 自动化与计算机 一、课程设计目的与任务 本课程的设计的目的是通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。结合具体的开发案例飞扬的小鸟,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。二、课程设计的内容与基本要求1、课程设计题目 飞扬的小鸟2、课程设计内容 要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏飞扬的小鸟,并针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。飞扬的小鸟是由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍,而这只鸟其实是根本不会飞的所以玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。游戏玩法:在游戏开始后,点击屏幕,要记住是保持一定的规律的仔细观察点击屏幕,不要让小鸟掉下来。游戏过程:让小鸟不要撞到管子,每穿过一个管子的缝隙得1分。游戏背景音乐设计游戏背景动画设计游戏界面设计游戏关卡设计游戏积分榜的设计三、课程设计步骤及时间进度和场地安排本课程设计将安排在第18周, 教育技术中心。具体安排如下:第一天,系统开发平台搭建及主流开发工具安装第二天,游戏界面的设计第三天,游戏业务的设计第四天,游戏关卡的设计 第五天,系统调试 测试 打包和验收周次星期一星期二星期三星期四星期五第18周第1-8节第1-8节第1-8节第1-8节第1-8节地点现教221现教221现教221现教221现教221四、课程设计考核及评分标准课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。具体评分标准如下:设置六个评分点(1)设计方案正确,具有可行性、创新性; 25分(2)系统开发效果较好; 25分(3)态度认真、刻苦钻研、遵守纪律; 10分(4)设计报告规范、课程设计报告质量高、参考文献充分 20分(5)课程设计答辩概念清晰,内容正确 10分(6)课程设计期间的课堂考勤、答疑与统筹考虑。 10分 按上述六项分别记分后求和,总分按五级记分法记载最后成绩。优秀(10090分),良好(8089分),中等(7079分),及格(6069分),不及格(059分)1 需求分析1.1课设设计题目飞扬的小鸟1.2 设计目的通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。结合具体的开发案例飞扬的小鸟,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开发的知识。要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏飞扬的小鸟;针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。1.3 设计任务及要求设计“飞扬的小鸟”游戏包括:游戏玩法,游戏过程,游戏背景音乐设计,游戏背景动画设计,游戏界面设计,游戏关卡设计,游戏积分榜的设计。游戏玩法:游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍,而这只鸟其实是根本不会飞的所以玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。2软硬件运行环境及开发工具2.1 硬件环境CPU:Pentium 4 3.0以上。内存:512MB以上。硬盘:80GB以上。显示器:1024768像素以上。数据库:Access2000以上。操作系统:Windows XP或更高版本。2.2软件环境MyElipse、JAVA 3游戏总体设计3.1游戏功能简介玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡,具体的功能如下:(1)登录界面按下图标进入游戏;(2)每点击一下屏幕,小鸟飞一下;小鸟要是碰到柱子或者撞到地面就显示游戏结束界面。3.2游戏的整体流程图游戏登录界面点击开始进入游戏判断小鸟是否撞地撞柱子游戏over是否结束游戏游戏结束YYNYNN图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王珊 萨师煊,数据库系统概论(第四版),高等教育出版社,20063萨师煊,SQL Server 从入门到精通,高等教育出版社,20064 周之 黄玫译, 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 BufferedImage8;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=ground.y)alpha=-3.14/2;/垂直撞地return true;/碰到了地面return false;public boolean hit(Column column)/子类重载上面的hit方法,根据参数列表不同,访问 /不同的重载方法。int m=x+width/2;int n=x-width/2;int a=column.x-column.width/2;int b=column.x+column.width/2;if(m=a&n=b)int a1=y-15;int a2=y+15;int b1=column.y-column.grap/2;int b2=column.y+column.grap/2;if(a1=b2)return true;return false;小鸟世界类package com.tarent.flappybird;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.image.BufferedImage;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JPanel;/ctrl + shift +f 排版public class World extends JPanel BufferedImage bg;/ 背景图BufferedImage start_image;/游戏开始BufferedImage gameover_image;/游戏结束Ground ground;/土地Column c1;/两个柱子Column c2;Bird bird;/鸟boolean isGameOver;/判断游戏是否结束boolean started;/判断游戏是否开始int score=0;/得分/* 构造器,构造方法,构造函数,用来给属性赋初始值 */public World() try / 加载背景图bg = ImageIO.read(getClass().getResource(bg.png);start_image=ImageIO.read(getClass().getResource(start.png);gameover_image=ImageIO.read(getClass().getResource(gameover.png); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/ try catch解决异常 /初始化土地,柱子,鸟newWorld(); public void newWorld() ground = new Ground();/初始化土地 c1 = new Column(1);/第一根柱子 c2 = new Column(2);/第二根柱子 bird=new Bird();/初始化鸟 score=0; isGameOver=false; started=false; /* 画图的方法,g是画图工具 */public void paint(Graphics g) / 画背景图g.drawImage(bg, 0, 0, null);/*,先画柱子后画土地,美观*/画柱子g.drawImage(c1.image, c1.x-c1.width/2, c1.y-c1.height/2, null);/画第一个柱子g.drawImage(c2.image, c2.x-c2.width/2, c2.y-c2.height/2, null);/画第二个柱子/画土地g.drawImage(ground.image,ground.x, ground.y, null);/画土地/画鸟/bird.alpha =-1.2;/赋值改变头朝向Graphics2D g1=(Graphics2D)g;/在鸟的(x,y)位置,把坐标系旋转alpha倾角g1.rotate(-bird.alpha,bird.x,bird.y);g1.drawImage(bird.image,bird.x-bird.width/2,bird.y-bird.height/2,null);g1.rotate(bird.alpha,bird.x,bird.y);if(!started)/画游戏开始的示意图g.drawImage(start_image, 0, 0, null); if(isGameOver) g.drawImage(gameover_image, 0, 0, null); /画分数 Font f=new Font(隶书,Font.BOLD,25); g.setFont(f); g.setColor(Color.black); g.drawString(你的得分为:+score, 10, 20);/*让图片动起来的方法*/public void action()/为该游戏界面,添加鼠标监听事件MouseAdapter m=new MouseAdapter()/监听鼠标点击操作public void mousePressed(MouseEvent e)System.out.println(点我!随便点);if(isGameOver)newWorld();/重新开始else/鸟跳一下bird.flappy();started=true;/开始游戏;this.addMouseListener(m);while(true)if(started)/游戏开始,并且结束,这个过程,才动if(!isGameOver)ground.step();/土地动一次c1.step();/柱子动一次c2.step();bird.step();/是否得分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();/游戏输赢的判定if(bird.hit(ground)|bird.hit(c1)|bird.hit(c2)isGameOver=true;柱子类package com.tarent.flappybird;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;/*柱子类*/public class Column BufferedImage image;/柱子的图片 int x;/柱子的中心点 int y; int width;/柱子的宽和高 int height; int distance;/两根柱子的距离 int grap=144;/一根柱子中间的间隙距离 Random random = new Random();/随机函数生成器,用来随机柱子高度 /* 构造器,给属性赋初值*/ public Column(int num)/num代表第几根柱子 try image = ImageIO.read(getClass().getResource(Column.png); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); width = image.getWidth();/把图片的宽和高赋值给柱子 height = image.getHeight(); y = random.nextInt(218)+132;/已经计算好的数据,不能改 distance = 245; x = (num-1)*dista

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论