AppInventor射击游戏.docx

上传人:b****5 文档编号:12213503 上传时间:2023-04-17 格式:DOCX 页数:23 大小:2.20MB
下载 相关 举报
AppInventor射击游戏.docx_第1页
第1页 / 共23页
AppInventor射击游戏.docx_第2页
第2页 / 共23页
AppInventor射击游戏.docx_第3页
第3页 / 共23页
AppInventor射击游戏.docx_第4页
第4页 / 共23页
AppInventor射击游戏.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

AppInventor射击游戏.docx

《AppInventor射击游戏.docx》由会员分享,可在线阅读,更多相关《AppInventor射击游戏.docx(23页珍藏版)》请在冰豆网上搜索。

AppInventor射击游戏.docx

AppInventor射击游戏

 

Android应用程序开发

结课报告

 

软件名称:

AppInventor2

班级:

xxxx

学号:

xxxx

学生:

xxxx

指导教师:

xxxx

 

2015年4月24日

 

 

1综述

1.1应用介绍

<<虫虫来袭>>是一款单人射击游戏。

游戏中玩家扮演一个女孩,面对不断出现的虫子,进行射击。

随着分数的增加,虫子的速度越来越快,关卡上升,出现不同的大Boss。

女孩必须躲过虫子的冲撞才能存活下来。

1.2开发的目的与目的

GoogleAppInventor是一个完全在线开发的Android编程环境,抛弃复杂的程式代码而使用积木式的堆叠法来完成您的Android程式。

对于Android初学者或是机器人开发者来说是一大福音。

他们不大需要太华丽的界面,只要使用基本元件例如按钮、文字输入输出即可。

非常适合学习与有兴趣的学生进行开发创造。

1.3类似的产品

游戏中,单人射击游戏很多。

但是利用AppInventor编程环境开发的却少之又少。

本次课程设计试一次尝试,AppInventor到底能开发出什么样水准的游戏出来。

1.4开发环境

AI2中文版在线开发

1.5开发环境的搭建

1.登陆网址:

2.找到中文版在线开发

3.进入:

contest.appinventor.mit.edu/login/

4.利用进行注册选择中文即可进行中文版开发。

2开发详解

2.1开发所用到的素材展示

游戏所用到的素材

素材名

类型

用途

素材名

类型

用途

back1~back12.png

图片

游戏界面的背景图片(随机)

Boss1~boss20.png(随机)

图片

小怪的贴图

Boom1~boom5.png

图片

爆炸效果的图片(渐进)

bossHP.png

图片

Boss血量的贴图

BossZidan.png

图片

BOSS的子弹贴图

Class.png

图片

关卡的贴图

HP.png

图片

女孩血量的贴图

Ic.jpg

图片

应用图标的图片

nvhai.png

图片

女孩的贴图

NO1.png

图片

排行榜第一名贴图

NO2.png

图片

排行榜第二名贴图

NO3.png

图片

排行榜第三名贴图

nvhaiZidan.png

图片

女孩子弹的贴图

SC.png

图片

分数的贴图

scoreBack.png

图片

排行榜页面背景

Zaoze1.png

图片

怪物出现位置贴图

Zaoze2.png

图片

怪物出现位置贴图

Baozha.mp3

音效

子弹爆炸音效

zidanM.mp3

音效

子弹发射音效

nvhaiM.mp3

音效

女孩受伤音效

Screen1BackMusic.mp3

音乐

主菜单界面音乐

mainBack.mp3

音乐

游戏界面音乐

BossTimeMusic.mp3

音乐

Boss出现的音乐

scoreBackMusic.mp3

音乐

排行榜界面音乐

settleBackMusic.mp3

音乐

设置界面的音乐

 

素材截图

2.2主界面的设计

2.2.1主界面的效果预览图

2.2.2主界面的前端设计

主界面组件设计如下所示:

主菜单界面用到的控件有7个,分别是:

Layout:

垂直布局,Label:

gameName,Button:

start

Button:

settle,Button:

exit,音频播放器:

backMusic,微数据库:

database

这是游戏的主菜单界面,点击开始,设置,排行榜分别跳转到相应界面:

main(游戏界面),settle(设置界面),score(排行榜界面)。

点击退出键则退出应用。

具体控件的属性设置依照屏幕大小自行调整。

2.2.3主界面的逻辑设计

按钮的点击函数:

逻辑界面主要处理按钮的点击事件,根据相应的屏幕名称调用“打开屏幕”的动作,打开相应的界面。

Screen1的初始化函数:

条件语句处理调用数据库中标签“music”的值,此值用来记录settle界面中设置的音乐是否允许播放。

如果此值为1,或者还未记录(返回值1,表明第一次打开此界面,默认允许播放音乐),则播放此界面的背景音乐“Screen1BackMusic.mp3”。

2.3游戏界面的设计

2.3.1游戏界面的效果预览图

在此有必要先介绍一下游戏规则,以便更好的理解逻辑的设计:

1.开始时女孩血量为10,初始化计分板信息。

2.小怪从四角的云朵里出现,随机进行移动,一次只出现一个小怪。

3.女孩可以进行移动,可以点击屏幕的任何地方,进行射出子弹的操作。

每次只能射出已发子弹。

4.小怪的移动速度随着分数的增加而加快。

5.当分数达到10的倍数时,BigBoss出现,血量,速度根据关卡增加。

6.BigBoss出现时小怪不出现,计分板不记录分数,背景音乐改变。

7.当BigBoss死亡时,游戏出现小怪,计分继续。

8.当女孩血量减少到0时,弹出对话框,提示是否继续或终止游戏。

9.选择对话框相应选项进行相应的操作。

2.3.2游戏界面的控件设计

设计界面如下图:

控件使用情况:

Main界面的控件个数为9(layoutmain计分板)+10(CanvasGround画布)+9(其他)=28:

1.其中计分板中有四个图像控件,四个标签。

2.画布中有nvhai(女孩),BigBoss(大怪),zaoze1~zaoze4(记录虫虫出现的位置,四角个一个),

Zidan(子弹),boss(小怪),boom(记录爆炸图像位置)共九个图像精灵。

3.ISwin(对话框):

用于显示结束游戏的消息。

4.MovezidanClock(计时器):

用于跟踪nvhai的位置,更新子弹的位置坐标。

属性设置为:

计时间隔:

10

启用计时:

true

一直计时:

true

5.setBoomImage(计时器):

用于更新爆炸的图片,实现帧动画效果。

属性设置为:

计时间隔:

1

启用计时:

false

一直计时:

false

6.nvhaiM,zidanM,baozhaM(三个音效控件):

分别控制女孩受伤时,子弹发射时,子弹击中怪物时发出音效。

最小间隔设为:

500

7.MainMusic,BossTimeMusic(两个音乐播放器):

分别控制默认背景音效与BigBoss出现时的背景音效。

属性设置:

循环播放:

true

只在前台播放:

true(界面被压回会自动停止)

8.scoredatabase(微数据库):

用来读取数据库中的信息,判断是否播放背景音。

关于数据库的使用文章最后会给出说明。

2.3.3游戏界面的逻辑设计

概览31块逻辑块:

由于main界面的实现函数较多,我将以实际的游戏流程解释说明所有函数:

先来看几个全局变量的定义:

HP:

女孩的血量信息,初始化为10.

BigBossHP:

大怪的血量信息,初始化为0.

MAXHP:

最大血量10.

CLASS:

关卡初始化为1.

Point:

分数初始化为0.

先看定义的几个过程,之所以写成过程函数,因为他们经常被调用,写成函数能有效减少代码量。

 

1.初始化main界面的函数:

关于标签“music”的作用,之后有解释。

2.initMain函数用到的函数:

初始化计分板,设置计分板,初始化女孩,初始化子弹,初始化小怪如下:

由于都是进行一般的属性值设置,仔细阅读各个属性的初始值,关系到事件的响应条件。

现在主要关注函数的调用:

Initzidan中调用函数zidanBacktoNvhai函数,使zidan(图像精灵)始终在nvhai位置上,并初始时不显示。

函数如下:

3.几个重要的事件处理:

(1)女孩移动事件,涉及函数:

当nvhai精灵被拖动时,改变位置,并利用计时器始终更新zidan的位置跟随nvhai。

判断子弹速度表明:

当子弹速度不为零,说明在运动中,此时子弹不响应任何操作。

(2)子弹的发射事件:

判断子弹速度,如果子弹在飞行中(速度不为零),触发操作。

调用标签值“sound”,读取是否开启音效,进行相应操作。

之后几个函数中有类似控制音效或者音乐的操作。

(3)各个精灵到达边界事件:

需要说明的是子弹到达边界后,立即初始化操作,移动到nvhai所在的位置。

保证没回子弹都是从nvhai精灵位置处发射。

(4)Zidan的碰撞事件:

说明:

子弹碰到小怪或者BigBoss,执行不同的操作。

首先判断是否播放音效,之后调用playBoomImage函数播放爆炸画面。

此细节在(8)中有详解。

如果子弹碰到小怪,则初始化zidan,boss(小怪),Point值加一,设置计分板,调用ISBigBoss判断是否应该出现BigBoss。

如果子弹碰到BigBoss,初始化子弹,减少BigBossHP值,判断BigBossHP是否为零,是则停止隐藏BigBoss,改变音乐,并初始化小怪initBoss。

相应函数如下:

playBoomImage,ISBigBoss分别在(8),(5)中讲解。

(5)BigBoss的生命周期:

在(4)中调用ISBigBoss函数,就是判断分数是否达到出现BigBoss的情况。

如果达到,则停止小怪活动,初始化BigBoss,设置随机贴图,设置随机位置,设置显示状态,速度等属性。

(6)Nvhai的碰撞事件:

当女孩被Boss或者BigBoss碰到后,播放音效,HP减少,更新计分板的值,判断是否结束游戏,HP=0时存储分数数据库。

saveScore函数操作:

在数据库中设置三个标签,依次进行比较,储存游戏成绩。

排行榜只显示前三名。

getISwin显示对话框,如下(7)中所示。

(7)对话框事件:

显示对话框,并进行选择完成完成的事件操作:

选择“是”则初始化main,重新游戏。

选择“不要”则返回Screen1屏幕。

(8)爆炸播放帧动画:

播放帧动画的部分利用了控件setBoomImage(计时器),playBoomImage函数调用boom精灵到发生子弹碰撞的位置,显示图片为boom1,之后利用计时器间隔1ms的时间切换图片,依次播放5图片,展示爆炸效果。

之后设置setBossImage状态为false,boom状态为false,等待下一次调用。

至此main所有逻辑31块逻辑块均已展示完毕。

函数调用关系很繁琐,每一时刻的精灵们的状态至关重要,是展示正常游戏所必须完全了解的,否则极容易出错。

2.4设置界面的设计

2.4.1设置界面的效果预览图

2.4.2设置界面的控件设计

设置界面需要的控件:

一个垂直布局下的四个水平布局。

第一个水平布局显示文字:

设置

中间两个水平布局分别左右各一个占位标签,中间一个按钮,显示音乐音效设置。

第四个水平布局占位用。

一个微数据库:

注意,一个应用只有一个微数据库,main界面的database与排行榜界面的database,虽然名字不同,但是是一个数据库,共用标签值。

一个音乐播放器:

播放背景音乐

2.4.3设置界面的逻辑设计

设置界面共四个逻辑块。

任务相对较为简单:

Settle回压函数:

返回到主菜单界面。

Settle初始化函数:

根据微数据库中标签“music”的值,决定是否播放背景音乐。

同时设置musicButton,soundButton的图片值。

按钮点击事件:

两个按钮分别转换标签“music”,“sound”的值,从而达到点击一次,进行开关的效果,每次点击后,都要更新微数据库的标签值(1表示允许播放,0表示不允许播放),以供其他界面使用。

同时更新按钮的图片值,使之符合设置意图。

同时更新当前页面的音乐播放设置。

2.5排行榜界面的设计

2.5.1排行榜界面的效果预览图

2.5.2排行榜界面的控件设计

此界面所用到的控件有:

标签:

显示文本“排行榜”

垂直布局:

三个水平布局

每个水平布局下一个图像控件,一个标签控件。

图像控件显示王冠图片,标签显示分数。

微数据库scoredatabase:

读取分数数据使用。

音频播放器:

播放背景音乐。

2.5.3排行榜界面的逻辑设计

Score初始化操作:

读取数据库中的三个值,分别为第一名,第二名,第三名的成绩。

通过设置文本值显示出来。

值的存储是在main界面的saveScore函数中进行的实现。

判断是否进行背景音乐的播放。

Score压回事件:

返回到Screen1界面。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1