1、游戏界面设计游戏关卡设计游戏积分榜的设计三、课程设计步骤及时间进度和场地安排本课程设计将安排在第18周, 教育技术中心。具体安排如下:第一天,系统开发平台搭建及主流开发工具安装第二天,游戏界面的设计第三天,游戏业务的设计第四天,游戏关卡的设计 第五天,系统调试 测试 打包和验收周次星期一星期二星期三星期四星期五第18周第1-8节地点现教221四、课程设计考核及评分标准课程设计考核将综合考虑学生考勤和参与度,系统设计方案正确性,系统设计和开发效果以及课程设计报告书的质量。具体评分标准如下:设置六个评分点(1)设计方案正确,具有可行性、创新性; 25分(2)系统开发效果较好;(3)态度认真、刻苦钻
2、研、遵守纪律; 10分(4)设计报告规范、课程设计报告质量高、参考文献充分 20分(5)课程设计答辩概念清晰,内容正确 10分(6)课程设计期间的课堂考勤、答疑与统筹考虑。 按上述六项分别记分后求和,总分按五级记分法记载最后成绩。优秀(10090分),良好(8089分),中等(7079分),及格(6069分),不及格(059分)1 需求分析1.1课设设计题目飞扬的小鸟1.2 设计目的通过实践使同学们经历智能手机软件开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的智能手机开发的知识。结合具体的开发案例飞扬的小鸟,理解并初步掌握智能手机开发的主要环节和步骤以及智能手机游戏开
3、发的知识。要求学生根据所学的软件工程的理念,利用所学的Android 手机开发的知识,开发一个智能手机游戏飞扬的小鸟;针对该手机游戏软件进行需求分析,总体设计、详细设计、编码、测试。1.3 设计任务及要求设计“飞扬的小鸟”游戏包括:游戏玩法,游戏过程,游戏背景音乐设计,游戏背景动画设计,游戏界面设计,游戏关卡设计,游戏积分榜的设计。游戏玩法:游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍,而这只鸟其实是根本不会飞的所以玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上
4、就会失败阵亡。2软硬件运行环境及开发工具2.1 硬件环境CPU:Pentium 4 3.0以上。内存:512MB以上。硬盘:80GB以上。显示器:1024768像素以上。数据库:Access2000以上。操作系统:Windows XP或更高版本。2.2软件环境MyElipse、JAVA3游戏总体设计3.1游戏功能简介玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡,具体的功能如下:(1)登录界面按下图标进入游戏;(2)每点击一下屏幕,小鸟飞一下;小鸟要是碰到柱子或者撞到
5、地面就显示游戏结束界面。3.2游戏的整体流程图图1 游戏的整体流程图4 系统详细设计 经过需求分析、功能模块设计之后要进入详细设计阶段,本阶段将按游戏的主要模块进行论述,重在阐述具体的某项功能的实现方法或运用到的相关技术。4.1游戏背景动画设计代码如下:public static void main(String args) / TODO Auto-generated method stub JFrame win = new JFrame(飞扬的小鸟 作者:卢灿); win.setSize(432, 674); win.setLocationRelativeTo(null); win.setD
6、efaultCloseOperation(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); win.setVisible(true); world.action();4.3游戏关卡设计/
7、游戏输赢的判定,代码如下: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 block e.printStackTrace();5 操作说明及运行结果5.1 操作说明游戏玩法:玩家每点击一下小鸟就会飞高一点,不点击就
8、会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。游戏积分榜的设计:5.2运行结果登录界面的设计图2 登录界面游戏过程中的界面设计图3 游戏过程中的界面游戏结束时的界面设计图4 游戏结束时的界面6总结 在本次课程设计中,我们遇到的困难很多,在解决它们的同时我们又学到了很多,获益非浅,特别是如何分析、建立、开发一个游戏。在一个游戏开发的过程中编码不是重要的,重要的是分析游戏、建立起游戏模型。在分析一个游戏前,分析人员必须要对将要开发的游戏所涉及到的各方面知识有一个认识,然后将游戏的模型建立起来。而且一个成功的游
9、戏要符合用户的需要,要以用户为中心,开发出用户想要的游戏,而不能自以为是,想当然。在游戏编写中,我们认识到游戏要有简便的界面,完备的文挡。拥有这些条件,游戏的复杂度才能大大减少,修改代码时更加容易下手。我认为,所谓良好的界面,就是用户需要的界面,力求简便全面。所以设计一个界面时,开发人员必须要了解用户的想法,从用户的角度去设计,当然,开发不能全听用户的意见,在详细分析了游戏后,开发人员可以向用户提出一些修改的意见,在双方多次交流后定出游戏所需的功能,以决定界面的实现。在编码中,良好的编程风格与习惯是提高工作效率的一个重要方面,而且良好的编程风格与习惯也是使软件便于维护的基础。那如何是良好的编程
10、风格与习惯呢?我们认为主要是程序的模块化、必要的注释和完备的设计文挡三个方面。所谓模块化就是使程序的功能实现分成多个单独的功能模块,而不能在一大段代码中实现多个功能,如果这样做,别的人是非常难读懂你的程序。必要的注释,显而易见是要在程序的编写中加入对程序的说明,原因就是为了别人能读懂你的程序,再一段时间后你自己还能读懂自己的程序。而完备的设计文挡是在系统开发过程中记录下开发的全部过程,拥有它,在以后维护软件时就有依据使维护工作变得简单一些。总结这次课程设计给我们感受最深的至少有四点:1进行软游戏件开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。2要遵循游戏开发本身的规律和善于吸收已有的经
11、验。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.sw
12、ing.JFrame;public class FlappyBird /* * param args */ public static void main(String args) 小鸟类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; in
13、t 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)/子类重载上
14、面的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;小鸟世界类import java.awt.Color;import java
15、.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JPanel;/ctrl + shift +f 排版public class World extends JPanel BufferedImage bg;/ 背景图 BufferedImage start_image;/游戏开始 BufferedImage gameover_image;/游戏结束 G
16、round 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_
17、image=ImageIO.read(getClass().getResource(gameover.png catch (IOException e) / TODO Auto-generated catch block / try catch解决异常 /初始化土地,柱子,鸟 newWorld(); public void newWorld() ground = new Ground();/初始化土地 c1 = new Column(1);/第一根柱子 c2 = new Column(2);/第二根柱子 bird=new Bird();/初始化鸟 score=0; isGameOver=fal
18、se; 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,gr
19、ound.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(sta
20、rt_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
21、 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) /游戏输赢的判定 if(bird.hit(ground)|bird.hit(c1)|bird.hit(c2) isGameOver=true;柱子类import java.util.Random;/*柱子类*/public class Column /
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1