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. 【PHP】 php实现字符串反转:支持中英文

    strrev  函数对英文很好用,直接可以实现字符串翻转 但是面对中文呢?肯定都是乱码,对于这样的问题有很多,比如strstr,substr等函数都是这样的. PHP提供了mb_类的函数实现不同编码. ...

  2. MQTT协议笔记之发布流程

    MQTT协议笔记之发布流程 前言 这次要讲到客户端/服务器的发布消息行为,与PUBLISH相关的消息类型,会在这里看到. PUBLISH 客户端发布消息经由服务器分发到所有对应的订阅者那里.一个订阅者 ...

  3. 基于TINY4412的Andorid开发-------简单的LED灯控制

    参考资料: <Andriod系统源代码情景分析> <嵌入式Linux系统开发完全手册_基于4412_上册> 作者:彭东林 邮箱:pengdonglin137@163.com 平 ...

  4. vue视频: 自定义指令 && 拖拽 && 自定义键盘信息

    v-textv-forv-html 指令: 扩展html语法 自定义指令:1. 自定义属性指令: Vue.directive(指令名称,function(参数){ this.el -> 原生DO ...

  5. windows 10激活

    1.安装Microsoft Toolkit 解压,安装 2.打开Microsoft Toolkit软件 点击下面红色框框 等到出现下面内容后,继续下一步 3.点击下面按钮 等待片刻后,出现下面结果,就 ...

  6. nginx 认证访问web

    htpasswd -c /usr/local/nginx/passwd.db huo nginx .conf文件添加↓:

  7. 170714、springboot编程之多数据源切换(动态)

    (1)新建maven java project; 新建一个maven project,取名为:spring-boot-multi-ds (2)在pom.xml添加依赖包: 在pom.xml文件中加入依 ...

  8. jquery操作select标签change事件

    $('#update_supply_id').on('change',function(){//判断是否选取prompt属性,无返回值: if($(this).val()){ var selectTe ...

  9. jq和axios的取消请求

    场景: 分页: 每次点击分页会发送请求,如果上一次请求还未获取到,下一次请求已经开始且先一步获取到,那么数据上会出现问题. 快速点击会发送多次请求,多次点击的时候一般的做法我们会定义一个flag,此时 ...

  10. 洛谷P2444 病毒【AC自动机】

    题目描述 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码段,试问,是否 ...