如图3.01所示,
图3.1 主角功能图
3.1.2 背景音乐和音效
当游戏进入到游戏按钮主页面时,可以对游戏进行音乐音效的设置,音乐是当游戏开始时,加的背景音乐;而音效设置是指挡子弹发射或者子弹击中目标时,所加的音效。按钮主页面的音效设置包括两方面的内容,音效的设置和背景音乐的设置。音效分为开,关;音乐也分为开和关。背景音乐从游戏的开始直到游戏的结束,而音效主要是在游戏的60秒内才有并且要有子弹的发射或者子弹及中敌方[网学用户上传],敌方[网学用户上传]发生爆炸才能听到音效的。如表3.2所示
表3.2 音乐音效用例图
用例名称 背景音乐音效
功能简述 控制游戏背景音乐的开关;发射子弹时的音效;
子弹打中目标时,爆炸音效
前置条件 游戏开启,音乐音效打开
后置条件 游戏没有结束,子弹打中目标或者有子弹发射
基本流 1、在主按钮界面中,设置音效音乐
2、设置音乐的开关
3、设置音效的开关
4、设置成功,返回主按钮界面
3.1.3 敌方[网学用户上传]
敌方[网学用户上传]在游戏开始以后才开始出现,并且没有什么太大的规律,都是从屏幕的最右面出现,然后消失在屏幕以外或者被子弹击中消失。敌方[网学用户上传]走的路线是有轨道的,从屏幕的右上方出现后,会走一段轨迹,在运动过程中如果被子弹打中就会爆炸消失,如果没有被击中,则会消失在屏幕以外的地方。如表3.3所示,
表3.3 敌方[网学用户上传]用例图
用例名称 敌方[网学用户上传]
功能简述 [网学用户上传]随机出现,被击中或者离开屏幕
前置条件 游戏开始,并且在60秒之内
后置条件 游戏没有结束
基本流 1、在主按钮界面中点击开始游戏
2、敌方[网学用户上传]就会在屏幕上随机的出现
3、如果被子弹打中就会爆炸如果没有,则会消失在屏幕以外
3.2 系统功能设计流程
我把整个游戏分为了两部分游戏开始欢迎界面,游戏功能选择。而游戏功能选择又分为三部分:游戏开始,音乐的开关,积分榜。游戏首次运行时,会有动画界面的播放,动画界面分为两个画面,动画画面1、动画画面2。游戏开始时,可通过虚拟键的来控制[网学用户上传]的左右移动,通过在屏幕上面点击来调整炮筒的角度并且发子弹,如果击中敌方[网学用户上传],就会有相应的音效和动画。音乐开关设置分为游戏背景音乐的设置和游戏音效的设置。分数的最高纪录主要记录的是时间和分数。时间设置为一分钟,在一分钟内打的[网学用户上传]数量就是玩家该次游戏的得分,得分与数据库中的分数进行比较,如果是最高的则为破纪录,则显示恭喜你打破记录,如果没有破纪录则显示为加油,再接再厉,同时还要和其他的分数进行比较,是否在最高分的五个分数之中,如果在这五个当中就会删除原来五个分数中最低的那个,并且获取当时玩家游戏的时间,显示在积分榜中。如图3.4
图3.4 总体功能结构图
3.3 [网学用户上传]大战相关功能联系设计
Android(java)主要是面向对象的编程语言,也就是[网学用户上传]大战中的每一个类都有各自的动作和功能。例如子弹类,子弹类主要就是发射子弹和子弹的碰撞爆炸效果。这些类表面上都是各自独立,没有什么太大的关系。但是整个程序的运行要所有的类之间互相配合才能完成。通过点击开始游戏按钮,游戏就会进入到欢迎动画界面,播放完动画后进入按钮主界面,选择游戏开始按钮就会进入游戏机面,通过控制主角的移动和炮筒的方向来控制子弹的发射方向,并且判断是否击中目标,一分钟后,游戏结束进入到结束界面。如图 3.5 所示。
图3.5主类设计流程
图3.6主类相关流程图
GameActivity类是主类,通过调用其他类中封装的方法来使整个系统运行起来实现相应的功能,下面显示GameActivity类与各个类之间的关系,并且展示个各类之间调用关系,类完成的主要动作,还有各个动作之间是怎么配合,通过什么函数实现。其中[网学用户上传]的Daoao 类还有Target类是主角[网学用户上传]和敌方[网学用户上传]出现的类,主角发射子弹通过调用Bullet类还有explosion类来实现的。主角发射子弹,击中敌方[网学用户上传]并且发生爆炸,最后通过score类,判断是否破纪录,并且是否能够显示在积分榜上面。如图3.6所示
第4章 详细设计
4.1 [网学用户上传]大战主要类基本功能分析
4.1.1 主类
GameActivity类,把游戏分为八个界面,在不同的状态下进入到不同的界面来完成不同的功能和动作,这八个界面主要是欢迎界面(WellcomeSurfaceView),主菜单界面(MainMenuSurfaceView),游戏界面(GameView),音效控制界面(SoundControlsSurfaceView),积分榜界面(HighScoreSurfaceView),胜利界面(WinSurfaceView),失败界面(FailSurfaceView),游戏结束界面,高分记录界面。其中对数据库也做了定义用SQL数据库,把分数存储到数据库。当游戏处于不同的状态或者动作时就会转到相应的界面,来完成相应的动作或者功能。
定义了一个类为class WhatMessage()包含了这八个方法,新定义一个控制器,还定义了向Handler发送信息的方法。当Handler接收到发送来的不同的信息,并采用Case来进行判断是哪一个界面并且转到该界面,来实现和完成相应的功能。并且还定义了触屏,当触到了不同的功能也会转到相应的类来实现这个功能。一样也是使用了switch…case语句来实现的。
数据库的初始化也在这里完成了,主要是数据库的创建方法,数据库的关闭,插入记录的方法和查询方式。
全屏的设置,设置全屏的操作主要就两点:隐去状态栏部分,包括电池等图表;把应用的名字也隐去不显示。隐去标题栏(应用程序的名字)用:this.requestWindowsFeature(Window.FEATURE_NO_TITTLE)来实现的。隐去状态:this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)代码来实现的。还有另一种方法来实现这个功能,可以通过在项目的AndroidManifest.xml文件中对Activity的属性中进行配置来实现,隐去标题:android:theme=“@android:style/Theme .NoTitleBar”;设置全屏(隐去状态栏和应用标题):android:theme=“@android:style/Theme.NoTitleBar.Fullscreen”
4.1.2 欢迎界面
WellcomeSurfaceView类,该类主要实现了游戏开始时进行的动画加载,主要分为两个画面,并且这两个画面只播放一次。这两个画面播放完毕之后,就进入到了MainMenuButton界面。而该类的实现主要是通过以下几个方法实现的。首先是图片的引用,定义了一个logo图片数组,并且获得屏幕的宽和屏幕的高,目的是让图片容易实现占满整个屏(好设置)。其次是把图片加载到系统中应用。在引用过程中要对图片做一些处理,为了让图片美观的显示,设置抗锯齿:Paint.setAntiAlias(true);还有图片资源的加载使用BitmapFactory.decodeResource(Activity.getResources(),R.drawable.name),其中n为数字,name为图片的名字。
使用onDraw(Canvas canvas)来对画布和画笔进行设置,背景的设置使用画笔Paint,设置画笔的颜色和绘制黑填充矩形背景:paint.setColor(color.BLACK)Canvas.drawRect(0,0,
screenWidth,screenHeight,paint),这个矩形的大小就是屏幕的大小即该矩形覆盖整个屏幕。然后向这个矩形贴图,也就是用图片覆盖整个屏幕。canvas.drawBitmap(currentLogo,currentX,
currentY,paint)使用这
上一篇:
基于单片机的温度控制器
下一篇:
试论APP广告在手机中的应用