“我正在参加掘金社区游戏创意投稿大赛个人赛,详情请看:游戏创意投稿大赛”
开局一张图
- 开局会显示左上角的图片,晃动手机即可抽卡。
抽中卡片将弹窗显示
集齐卡片将获得完整的船长哦!
一、创意灵感
- 作为
工程师的我们
,每天都在编写代码
,很少进行运动
,所以打算利用传感器
,做一个摇一摇抽卡游戏
- 即可以
抽卡集齐船长
,又可以活动身体,岂不美哉!
- 上午我发布了一篇
拼图游戏的文章
,总觉得这个应用场景比较广范
,于是乎打算继续用船长进行二创。
- 说干就干,开始撸码
游戏规则
摇晃手机
即可抽卡
- 抽中
已存在的卡片界面不变
,抽中未存在的卡片
,界面补齐该区域图片
集齐
之后显示完整的船长图案。
二、思路分析
- 这里我们直接复用上午拼图的布局UI即可,
3x3的矩阵
- 界面设计(安卓屏幕多尺寸适配)——
ConstraintLayout
符合 - 传感器部分使用了安卓自带的
加速度传感器
来实现,之前写的这篇文章中有详细说明ConstraintLayout+ViewPager2打造《摇一摇新年幸运签》App
三、AC 代码:
-
布局没什么好说的上午的文章中有写过注意事项可点击查看《今天谁也别想拯救船长》纯kotlin 实现拼图游戏
-
抽卡逻辑
- 这里我选择先将所有图片设置为
invisible
- 构建图片数组,利用kotlin的随机函数
(image.indices).random()
,从中随机下标 - 将下标传入Dialog中进行展示抽中的卡片
- 利用
onWindowFocusChanged
函数,当Dialog消失时,给对应的图片设置为View.VISIBLE
- 这里我选择先将所有图片设置为
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
Log.e("TAG", hasFocus.toString())
isShake = !hasFocus
if (hasFocus) {
when (xy) {
0 -> {
x00.visibility = View.VISIBLE
}
1 -> {
x01.visibility = View.VISIBLE
}
2 -> {
x02.visibility = View.VISIBLE
}
3 -> {
x10.visibility = View.VISIBLE
}
4 -> {
x11.visibility = View.VISIBLE
}
5 -> {
x12.visibility = View.VISIBLE
}
6 -> {
x20.visibility = View.VISIBLE
}
7 -> {
x21.visibility = View.VISIBLE
}
else -> {
x22.visibility = View.VISIBLE
}
}
}
}
四、总结:
- 好了,代码撸完,我们
总结一下
:- 首先我们做了
屏幕适配
- 传感器的使用
onWindowFocusChanged
函数监听屏幕的状态对的时机显示抽中的卡
- 首先我们做了