《集卡拼船长》——Kotlin打造摇一摇抽卡游戏

1,412 阅读2分钟

“我正在参加掘金社区游戏创意投稿大赛个人赛,详情请看:游戏创意投稿大赛

开局一张图

  • 开局会显示左上角的图片,晃动手机即可抽卡。

微信图片_20220423223744.jpg

抽中卡片将弹窗显示

微信图片_20220423223757.jpg

集齐卡片将获得完整的船长哦!

微信图片_20220423223752.jpg

一、创意灵感

  • 作为工程师的我们,每天都在编写代码很少进行运动,所以打算利用传感器,做一个摇一摇抽卡游戏
  • 即可以抽卡集齐船长,又可以活动身体,岂不美哉!
  • 上午我发布了一篇拼图游戏的文章,总觉得这个应用场景比较广范,于是乎打算继续用船长进行二创。

微信图片_20220423092656.png

  • 说干就干,开始撸码

游戏规则

  • 摇晃手机即可抽卡
  • 抽中已存在的卡片界面不变,抽中未存在的卡片,界面补齐该区域图片
  • 集齐之后显示完整的船长图案。

二、思路分析

三、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函数监听屏幕的状态对的时机显示抽中的卡

其实还是蛮简单的,创作不易,对你有一些启发的话还请点赞关注,走一波哈!