2017-2018-1 JaWorld 团队作业--冲刺4
2017-2018-1 JaWorld 团队作业--冲刺4 (20162305)
总体架构
- 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏
- 游戏中所有模型的原型设定是精灵,因此不管是敌机还是战斗机都是精灵类,精灵类是所有类的父类
- 精灵类(Sprite)下有三个子类,一个是战斗机类,也就是玩家;一个是走直线的精灵类(AutoSprite),也就是对敌机的统称;还有一个是爆炸类,指的是敌机或战斗机被摧毁。
- 我所负责的是精灵类(Sprite)下的走直线的精灵类(AutoSprite)下的敌机类(EnemyPlane)

EnemyPlane
- 这个类是敌机类里面的主类,继承精灵类。首先先定义两个参数,power和value,power是敌机的抗击打能力,value是打一个敌机的分数。然后创建一个EnemyPlane的对象,调用Bitmap中的方法。
private int power = 1;//敌机的抗打击能力
private int value = 0;//打一个敌机的得分
public EnemyPlane(Bitmap bitmap){
super(bitmap);
}
- 再写几个方法确定敌机的抗击打能力和击毁一架敌机的分数。这几个方法分别是setPower,getPower,setValue和getValue,这四个方法用来确定其子类中定义的Power和Value两个数值。
//设定敌机的抵抗能力
public void setPower(int power){
this.power = power;
}
//获得敌机的抵抗能力
public int getPower(){
return power;
}
//设定击毁一个敌机的分数
public void setValue(int value){
this.value = value;
}
//获得敌机的分数
public int getValue(){
return value;
}
- 在父类ISprite中有beforeDraw方法,在敌机类中定义一个相应的afterDraw方法,这需要三要素布(Canvas),Paint(漆)和游戏视图(gameView)。接着判断敌机是否被摧毁,对每一个子弹进行循环判断,判断敌机是否与子弹相交,如果和子弹相交,说明子弹打在了飞机上,子弹消失,敌机的power减1,如果power小于等于0,则说明敌机已经被摧毁,执行爆炸效果。
protected void afterDraw(Canvas canvas, Paint paint, GameView gameView) {
super.afterDraw(canvas, paint, gameView);
//绘制完成后要检查自身是否被子弹打中
if(!isDestroyed()){
//敌机在绘制完成后要判断是否被子弹打中
List<Bullet> bullets = gameView.getAliveBullets();
for(Bullet bullet : bullets){
//判断敌机是否与子弹相交
Point p = getCollidePointWithOther(bullet);
if(p != null){
//如果有交点,说明子弹打到了飞机上
bullet.destroy();
power--;
if(power <= 0){
//敌机已经没有能量了,执行爆炸效果
explode(gameView);
return;
}
}
}
}
}
- explode方法,用来实现敌机的爆炸效果。首先创造爆炸效果,确定敌机中心位置,再新建一个爆炸类对象,将爆炸类对象定位,将这个对象添加到Sprite中。创建爆炸效果完成后,向GameView中添加得分并销毁敌机。
//创建爆炸效果后会销毁敌机
public void explode(GameView gameView){
//创建爆炸效果
float centerX = getX() + getWidth() / 2;
float centerY = getY() + getHeight() / 2;
Bitmap bitmap = gameView.getExplosionBitmap();
Explosion explosion = new Explosion(bitmap);
explosion.centerTo(centerX, centerY);
gameView.addSprite(explosion);
//创建爆炸效果完成后,向GameView中添加得分并销毁敌机
gameView.addScore(value);
destroy();
}
SmallEnemyPlane
这个类继承EnemyPlane中的方法,创建一个小的敌机,利用EnemyPlane中的方法设定小敌机抗抵抗能力为1,即一颗子弹就可以销毁小敌机,再设定击毁一个小敌机的分数。销毁一个小敌机可以得1000分。
相关代码
public class SmallEnemyPlane extends EnemyPlane {
public SmallEnemyPlane(Bitmap bitmap){
super(bitmap);
setPower(1);//小敌机抗抵抗能力为1,即一颗子弹就可以销毁小敌机
setValue(1000);//销毁一个小敌机可以得1000分
}
}
明日各个成员任务安排
-林臻同学以及马平川同学完成最后的代码整合,其余同学负责测试代码寻找bug。

2017-2018-1 JaWorld 团队作业--冲刺4的更多相关文章
- 2017-2018-1 JaWorld 团队作业--冲刺1
2017-2018-1 JaWorld 团队作业--冲刺1(20162301) 一.小组分工: 由于小组成员在本周比较忙碌,所以考虑后本组的冲刺就按照每天加入不同的类来完成.我们根据类的难度大小来决定 ...
- 2017-2018-1 JaWorld 团队作业--冲刺2
2017-2018-1 JaWorld 团队作业--冲刺2 (20162314) 总体架构 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模型的原型设定是精灵,因 ...
- 2017-2018-1 JaWorld 团队作业--冲刺3
2017-2018-1 JaWorld 团队作业--冲刺3 (20162306) 总体架构 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模型的原型设定是精灵,因 ...
- 2017-2018-1 JaWorld 团队作业--冲刺5
2017-2018-1 JaWorld 团队作业--冲刺5(20162310) 团队项目之战斗机类分析博客 总结 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模 ...
- 2017-2018-1 JaWorld 团队作业--冲刺6
2017-2018-1 JaWorld 团队作业--冲刺6(20162308) 实现 由于我在冲刺部分负责的是类之间的耦合,所以我就介绍一下本次游戏的总体实现. 我们定义了Sprite类,即精灵类,游 ...
- 2017-2018-1 JaWorld 团队作业--冲刺7
2017-2018-1 JaWorld 团队作业--冲刺7 冲刺博客 冲刺1 冲刺2 冲刺3 冲刺4 冲刺5 项目完成情况 存在的问题 存在的问题是敌机只设置了一种,没能实现多种敌机的游戏设置. 界面 ...
- 【2017集美大学1412软工实践_助教博客】团队作业4——第一次项目冲刺(Alpha版本)小组 成绩
第四次团队作业成绩公布 题目 团队作业4: http://www.cnblogs.com/happyzm/p/6722264.html 团队成绩 成绩公示如下: 检查项 会议内容 代码签入 心得体会或 ...
- 【2017集美大学1412软工实践_助教博客】团队作业8——第二次项目冲刺(Beta阶段)
题目 团队作业8: http://www.cnblogs.com/happyzm/p/6856179.html 团队作业8-1 beta冲刺计划 团队 新加入的成员,担当的角色,技术特点 下一阶段需要 ...
- 【2017集美大学1412软工实践_助教博客】团队作业7——Alpha冲刺之事后诸葛亮
题目 团队作业7: http://www.cnblogs.com/happyzm/p/6827853.html 团队成绩 评分项目 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 全组 ...
随机推荐
- saltstack远程执行命令.md
saltstack 支持在master上向client 远程执行命令,并显示命令执行的结果 命令格式: salt '<操作目标>' <方法> [参数] 示例 示例1 ping检 ...
- Objective-c官方文档翻译 类的定义
类是对象的蓝图. 一个类是描述了对象的行为和属性.例如NSString的一个实例.他的类提供了各种的方法来转化和表示他的内部字符的表示. 每个类的实例都包含了这个类的属性和行为.例如每个NSSt ...
- 布局的诡异bug合集+解决方法(更新中)
1.元素内部子元素的margin的边界线基准点的问题 论如何生硬起名字!!我反正已经被自己总结的题目绕晕了... “演员”介绍: 外层父元素:蓝色边框: 内部子元素:绿色区域: 粉红色区域是元素内部绿 ...
- Android Processes and Threads
Processes and Threads When an application component starts and the application does not have any oth ...
- 【BZOJ3677】[Apio2014]连珠线 换根DP
[BZOJ3677][Apio2014]连珠线 Description 在列奥纳多·达·芬奇时期,有一个流行的童年游戏,叫做“连珠线”.不出所料,玩这个游戏只需要珠子和线,珠子从1到礼编号,线分为红色 ...
- 170613、Spring整合RabbitMQ实例
一.rabbitMQ简介 1.1.rabbitMQ的优点(适用范围)1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器.2. 健壮.稳定.易用.跨平台.支持多种语言.文档齐全.3. ...
- SaltStack生产案例-服务部署(redis,mysql,apache+php,haproxy+keepalived)
顺序代码资料链接 课上资料.zip 接上篇:SaltStack生产案例-系统初始化 1,redis 主从 2,mysql 主从 2.1 mysql-install.sls (安装 初始化) 2.2 ...
- SQL---->mySQl卸载for mac
因为装的时候弄坏了 先来学习下怎么卸载吧,如下输入终端就好了 cd ~/ sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm ...
- Oracle 的闪回技术 --flashback
SQL Fundamentals: 表的创建和管理 如何开启数据库闪回? SQL> shutdown immediate; ORA-01109: database not open Databa ...
- Qunar机票技术部就有一个全年很关键的一个指标:搜索缓存命中率,当时已经做到了>99.7%。再往后,每提高0.1%,优化难度成指数级增长了。哪怕是千分之一,也直接影响用户体验,影响每天上万张机票的销售额。 在高并发场景下,提供了保证线程安全的对象、方法。比如经典的ConcurrentHashMap,它比起HashMap,有更小粒度的锁,并发读写性能更好。线程安全的StringBuilder取代S
Qunar机票技术部就有一个全年很关键的一个指标:搜索缓存命中率,当时已经做到了>99.7%.再往后,每提高0.1%,优化难度成指数级增长了.哪怕是千分之一,也直接影响用户体验,影响每天上万张机 ...