2017-2018-1 JaWorld 团队作业--冲刺6
2017-2018-1 JaWorld 团队作业--冲刺6(20162308)
实现
- 由于我在冲刺部分负责的是类之间的耦合,所以我就介绍一下本次游戏的总体实现。
- 我们定义了Sprite类,即精灵类,游戏中的飞机、子弹、奖励道具等都是继承自该类,我们通过moveTo()、move()等方法控制精灵的位置,通过beforeDraw()、onDraw()、afterDraw()实现相应的绘图逻辑。
- GameView是我们自定义的View类,由于View只支持单击事件,而不支持双击事件,所以我们自己定义了一个resolveTouchType()方法,通过这个方法可以合成我们自己想要的事件类型,比如双击事件。代码如下:
@Override
public boolean onTouchEvent(MotionEvent event){
//通过调用resolveTouchType方法,得到我们想要的事件类型
//需要注意的是resolveTouchType方法不会返回TOUCH_SINGLE_CLICK类型
//我们会在onDraw方法每次执行的时候,都会调用isSingleClick方法检测是否触发了单击事件
}
//合成我们想要的事件类型
private int resolveTouchType(MotionEvent event){
int touchType = -1;
int action = event.getAction();
touchX = event.getX();
touchY = event.getY();
if(action == MotionEvent.ACTION_MOVE){
long deltaTime = System.currentTimeMillis() - touchDownTime;
if(deltaTime > singleClickDurationTime){
//触点移动
touchType = TOUCH_MOVE;
}
}else if(action == MotionEvent.ACTION_DOWN){
//触点按下
touchDownTime = System.currentTimeMillis();
}else if(action == MotionEvent.ACTION_UP){
//触点弹起
touchUpTime = System.currentTimeMillis();
//计算触点按下到触点弹起之间的时间差
long downUpDurationTime = touchUpTime - touchDownTime;
//如果此次触点按下和抬起之间的时间差小于一次单击事件指定的时间差,
//那么我们就认为发生了一次单击
if(downUpDurationTime <= singleClickDurationTime){
//计算这次单击距离上次单击的时间差
long twoClickDurationTime = touchUpTime - lastSingleClickTime;
if(twoClickDurationTime <= doubleClickDurationTime){
//如果两次单击的时间差小于一次双击事件执行的时间差,
//那么我们就认为发生了一次双击事件
touchType = TOUCH_DOUBLE_CLICK;
//重置变量
lastSingleClickTime = -1;
touchDownTime = -1;
touchUpTime = -1;
}else{
//如果这次形成了单击事件,但是没有形成双击事件,那么我们暂不触发此次形成的单击事件
//我们应该在doubleClickDurationTime毫秒后看一下有没有再次形成第二个单击事件
//如果那时形成了第二个单击事件,那么我们就与此次的单击事件合成一次双击事件
//否则在doubleClickDurationTime毫秒后触发此次的单击事件
lastSingleClickTime = touchUpTime;
}
}
}
return touchType;
}
我们记录MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP的时间,一次单击事件由ACTION_DOWN和ACTION_UP两个事件合成,假设从ACTION_DOWN到ACTION_UP间隔小于200毫秒,我们就认为发生了一次单击事件。一次双击事件由两个点击事件合成,两个单击事件之间小于300毫秒,我们就认为发生了一次双击事件。在触发了双击事件的时候,我们就会触发炸弹,将屏幕内的敌机都炸毁。当处于ACTION_MOVE状态时,我们就通过event.getX()和event.getY()改变战斗机的位置。
我们还为GameView提供了start()、pause()、resume()和destroy()等方法,使其具备类似于Activity的生命周期,方便在Activity中对GameView进行状态管理。
不足的地方
- 在游戏的设计之初,我们计划设计出多种敌机,并且在游戏过程中有道具奖励。但在实际设计的过程中暂时还没实现。争取在最后一段时间将这个不足弥补。
小组讨论
2017-2018-1 JaWorld 团队作业--冲刺6的更多相关文章
- 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 团队作业--冲刺4
2017-2018-1 JaWorld 团队作业--冲刺4 (20162305) 总体架构 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模型的原型设定是精灵,因 ...
- 2017-2018-1 JaWorld 团队作业--冲刺5
2017-2018-1 JaWorld 团队作业--冲刺5(20162310) 团队项目之战斗机类分析博客 总结 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模 ...
- 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 团队成绩 评分项目 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 全组 ...
随机推荐
- linux 个性化设置shell提示
1.linux 用户登录过程中 相关文件执行顺序: /etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/b ...
- Java中DESKeySpec类
此类位于 javax.crypto.spec 包下.声明如下: public class DESKeySpec extends Object implements KeySpec 此类指定一个 DES ...
- codevs 5966 [SDOI2017]硬币游戏
输入描述 Input Description 输入输出数据精度为1e-10 [题解] #include<cstdio> using namespace std; ; char s[N][N ...
- 360全景图three.js
1.three.js是JavaScript编写的WebGL第三方库.提供了非常多的3D显示功能. Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机.光影. ...
- 1.执行环境判断 window 或 self
window or self ? 在 underscore 的判断所处环境的代码中,似乎我们没有看到 window 对象的引用,其实,在浏览器环境下,self 保存的就是当前 window 对象的引用 ...
- nohop以及后台运行的相关集合
本文参考:https://blog.csdn.net/u011095110/article/details/78666833 1. 后台运行一个命令: & tar -czvf /mnt/aa. ...
- Cookie的介绍及使用
咱们不搞一开始就一大堆理论知识介绍,怕把人讲懵了...... 咱们换一个思维方式——"从现象看本质",先说说我们看到了什么,再从看到的现象中提出问题,最后深入寻找答案. 我们看到的 ...
- undo文件丢失或损坏
startup mount cp +DATA/ora11g/datafile/undotbs1.dbf alter database rename file '+DATA/ora11g/datafil ...
- C /C ++中结构体的定义
c语言中结构体的定义: struct 结构体名{ 成员列表: ..... }结构体变量: 7.1.1 结构体类型变量的定义结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问 ...
- 浙江工业大学校赛 画图游戏 BugZhu抽抽抽!!
BugZhu抽抽抽!! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...