教你在Android中使用Anko制作一个找色块的小游戏

教你在Android中使用Anko制作一个找色块的小游戏

首页休闲益智解压色块更新时间:2024-10-11

作者:feintkotlin

这个小游戏是这样子的:有一组行列相同的方格组成的矩阵,其中有一个方格的颜色和其余的方格不相同,你要做的就是把那个方格挑选出来。随着等级的提升,方格的数量会不断增加,方块的颜色差异也会不断的减小。

先来看看程序的实际演示,界面比较简陋,将就着看看吧。

整个程序差不多有200来行代码,在这里就不全贴出来了,挑其中的几个关键步骤进行讲解,想要源码的同学可以到文章的底部找到源码的链接。

步骤一:生成颜色列表

为了方便生成差异颜色,我定义了一个RBG类,用于存放red、green、blue三个颜色分量。

data class RGB(var red:Int,var green:Int,var blue:Int)

接下来会使用到copy函数,便将其定义成类数据类。

生成颜色列表的主要代码是这样子的:

val rgbList= List<RGB>(level.cellNum){

return@List if (it==difIndex)

difColor(color,level.level)

else

color

}

其中的difIndex表示差异颜色所在的序号。difColor函数根据当前的颜色和等级来生成具有微小差异的颜色。

步骤二:创建布局

对于这种有大量重复元素的布局,使用Anko的DSL就比较方便了(可以对View进行重用)。程序的主体部分是由一个个方格组成的矩阵。在这里我使用TextView来表示那一个个方格。同过下面这段代码来生成一行方格

在DSL中你可以使用循环来生大量具有相同模式的视图。

其中的lparams是用来设置View的LayoutParams的,算是一种更加方便的写法。

在onClick中的listener是一个函数参数,用来处理方格被点击之后的事件。

步骤三:处理方格点击

上一步提到的函数参数 listener,是CellFactory.create() 函数的最后一个参数,所以在这里可以直接将代码写到lambda表达式中。

在这里处理逻辑是这样子的:

  1. 判断是否选中正确的色块,如果正确转跳到 2,否转跳到5

  2. 判断当前等级是否为12,是转挑到3,否转跳到4

  3. 提示“通关”,将intent中的level置为1

  4. 将intent中的level=当前Activity的level+1

  5. 提示“失败”,将intent中的level置为1

注:上面代码中的colorPair.second就是第一步生成的颜色列表,由于贪图方便,我只使用了一个列表来存储,是一个一维的结构。在这里通过列表的切片,获取每一行方格的颜色列表。

结尾

源码地址(Github):/feintKotlin/android (其中的find-color文件目录中)

喜欢的话,就点波收藏和关注;不喜欢的话也请在评论中说出,咱好进行改进。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved