返回信息流春节聚会玩什么?
一款名叫Heads Up的游戏因为艾伦秀的强力推荐,在国外流行起来。
玩法请看视频:
http://video.sina.com.cn/v/b/104135550-2780457263.html
看完之后,我和实验室的师弟决定做一个来玩玩,经过几日战斗,一个小APP新鲜出炉。
春节到来,发到版上,期待正巧看到此帖的BYR 下载试玩,给聚会活动带来一抹亮色 ^_^
传送门:
附件(2.7MB) GreatCharadeBYR.apk
http://aloha.sinaapp.com/greatcharade/
截图几张:
为了表示诚意,下面分享做这个APP用到的核心技术:基于重力感应的用户动作识别。
看过上面视频,大家肯定能发现,用户动作的识别是这个游戏的一个要点。
为了支持对用户动作的识别,现在智能手机都支持感应器,常见的有加速度感应器、重力感应器、旋转感应器等。
表面上看用户翻转屏幕是一个旋转屏幕的操作,从动作属性上讲,旋转感应器看起来是最匹配的,但是考虑到旋转是一种瞬时动作,而屏幕的角度却是一个相对稳衡的状态,所以基于屏幕的角度来决定状态的转移更为靠谱。基于以上考虑,我们最终决定用重力感应来做用户动作的识别。
一、从屏幕角度判断用户动作
假设我们已经基于重力感应算出了屏幕角度(后面会说如何做到),首先一起来看看如何以屏幕角度变化为基础,识别用户的动作。
在这个游戏中,主要有两个动作需要识别:
1. 用户向前翻转屏幕,识别为答对题目;
2. 用户向后翻转屏幕,识别为跳过题目。
于是我们将屏幕的角度分为五种状态,如下图所示:
五种状态转移的自动机如下图所示:
说明: Correct 表示识别到答对题目;Next 表示显示下一个词给用户;
二、基于重力感应计算屏幕角度
网上介绍安卓重力感应的文章比较多,这里引用一篇:http://blog.csdn.net/ithomer/article/details/6741092
主要的原理是这样的:
将手机的宽度方向视为 x轴,竖直方向视为y轴,垂直于屏幕的方向视为z轴,这样得到了一个三维直角坐标系。
重力加速度在三个方向的分量值,可以通过手机的重力感应器得到。
手机横向垂直的时候,y分量接近于0。所以根据 x 轴分量和 z轴分量的比值,我们就可以算出屏幕的倾斜角度,倾斜的角度又可以直接映射到上文中提到的五种状态。上文中已经提到,如何根据五种状态的转移识别用户动作,于是整个流程串到了一起。
至此,这个APP使用到的核心技术分享完毕,希望大家有所收获。
更希望大家在玩这个app时收获趣味和快乐 ^_^
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #11838同步于 2014/1/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
【心有灵犀】祝大家码年大吉
greatstar
2014/1/30镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复