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的更多相关文章

  1. 2017-2018-1 JaWorld 团队作业--冲刺1

    2017-2018-1 JaWorld 团队作业--冲刺1(20162301) 一.小组分工: 由于小组成员在本周比较忙碌,所以考虑后本组的冲刺就按照每天加入不同的类来完成.我们根据类的难度大小来决定 ...

  2. 2017-2018-1 JaWorld 团队作业--冲刺2

    2017-2018-1 JaWorld 团队作业--冲刺2 (20162314) 总体架构 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模型的原型设定是精灵,因 ...

  3. 2017-2018-1 JaWorld 团队作业--冲刺3

    2017-2018-1 JaWorld 团队作业--冲刺3 (20162306) 总体架构 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模型的原型设定是精灵,因 ...

  4. 2017-2018-1 JaWorld 团队作业--冲刺5

    2017-2018-1 JaWorld 团队作业--冲刺5(20162310) 团队项目之战斗机类分析博客 总结 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模 ...

  5. 2017-2018-1 JaWorld 团队作业--冲刺6

    2017-2018-1 JaWorld 团队作业--冲刺6(20162308) 实现 由于我在冲刺部分负责的是类之间的耦合,所以我就介绍一下本次游戏的总体实现. 我们定义了Sprite类,即精灵类,游 ...

  6. 2017-2018-1 JaWorld 团队作业--冲刺7

    2017-2018-1 JaWorld 团队作业--冲刺7 冲刺博客 冲刺1 冲刺2 冲刺3 冲刺4 冲刺5 项目完成情况 存在的问题 存在的问题是敌机只设置了一种,没能实现多种敌机的游戏设置. 界面 ...

  7. 【2017集美大学1412软工实践_助教博客】团队作业4——第一次项目冲刺(Alpha版本)小组 成绩

    第四次团队作业成绩公布 题目 团队作业4: http://www.cnblogs.com/happyzm/p/6722264.html 团队成绩 成绩公示如下: 检查项 会议内容 代码签入 心得体会或 ...

  8. 【2017集美大学1412软工实践_助教博客】团队作业8——第二次项目冲刺(Beta阶段)

    题目 团队作业8: http://www.cnblogs.com/happyzm/p/6856179.html 团队作业8-1 beta冲刺计划 团队 新加入的成员,担当的角色,技术特点 下一阶段需要 ...

  9. 【2017集美大学1412软工实践_助教博客】团队作业7——Alpha冲刺之事后诸葛亮

    题目 团队作业7: http://www.cnblogs.com/happyzm/p/6827853.html 团队成绩 评分项目 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 全组 ...

随机推荐

  1. poj_3662 最小化第k大的值

    题目大意 有N个节点以及连接的P个无向边,现在要通过这P条边从1号节点连接到N号节点.若无法连接成功,则返回-1:若能够连接成功,那么其中用到了L条边,这L条边中有K条边可以免费,L-K条边不能免费, ...

  2. Cookie/Session机制详解 <转>

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  3. install kubernetes dashboard 安装 kubernetes dashboard 详细

    参考: http://www.bubuko.com/infodetail-2242562.html http://www.cnblogs.com/zhenyuyaodidiao/p/6500897.h ...

  4. 【BZOJ3786】星系探索 DFS序+Splay

    [BZOJ3786]星系探索 Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球 ...

  5. postgresql----TEMPORARY TABLE和UNLOGGED TABLE

    一.TEMPORARY|TEMP TABLE 会话级或事务级的临时表,临时表在会话结束或事物结束自动删除,任何在临时表上创建的索引也会被自动删除.除非用模式修饰的名字引用,否则现有的同名永久表在临时表 ...

  6. 170616、解决 java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList

    报错截图: 原因:搭建项目的时候,springmvc默认是没有对象转换成json的转换器的,需要手动添加jackson依赖. 解决步骤: 1.添加jackson依赖到pom.xml <!-- j ...

  7. FZU 2105 Digits Count

     Problem 2105 Digits Count Accept: 444    Submit: 2139 Time Limit: 10000 mSec    Memory Limit : 2621 ...

  8. 强制关机导致ORA-03113

    数据库启动报错:无法打开数据库. [oracle@localhost ORCL]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Productio ...

  9. [SQL] 让特定的数据 排在最前

    MYSQL目前常用的两种方法,如下: 让值为"张三" 的数据排在最前. -- 方法一 end asc -- 方法二 select * from tableName where co ...

  10. Redis 缓存穿透,缓存击穿,缓存雪崩的解决方案分析

    设计一个缓存系统,不得不要考虑的问题就是:缓存穿透.缓存击穿与失效时的雪崩效应. 一.什么样的数据适合缓存? 分析一个数据是否适合缓存,我们要从访问频率.读写比例.数据一致性等要求去分析.  二.什么 ...