Java实现Android拼图游戏设计过程解析

作者:biyezuopinvip 时间:2021-10-02 17:13:18 

1.项目介绍

这是一款基于 Java 开发的移动端安卓小游戏——大家来拼图

2.项目原理

把选定的一张图片切分很多份,先是 33 格式,在一定的时间内点击格子交换使图形拼成一张完整的图片就算闯关成功,这样关卡也很容易设计,33;44;55;6*6;

3.项目设计

我们需要一个容器,可以放这些图片的块块,为了方便,我们准备使用RelativeLayout 配合 addRule 实现

每个图片的块块,我们准备使用 ImageView

点击交换,我们准备使用传统的 TranslationAnimation 来实现

4.项目实现

代码实现:

首先,我们准备实现能够把一张图片,切成 n*n 份,放在指定的位置;

我们只需要设置 n 这个数字,然后根据布局的宽或者高其中的小值,除以 n,减去一些边距就可以得到我们 ImageView 的宽和高了

5.获取布局

Java实现Android拼图游戏设计过程解析

构造方法里面,我们得到把设置的 margin 值转化为 dp;获得布局的 padding 值;整体是个正方形,所以我们取 padding 四个方向中的最小值;

onMeasure 里面主要就是获得到布局的宽度,然后进行图片的准备,以及初始化我们的 Item,为 Item 设置宽度和高度

6.准备图片

这里如果没有设置 mBitmap 就准备一张备用图片,然后调用 ImageSplitter.split 将图片切成 n * n 返回一个 List,这需要新建一个图片切割类 ImageSplitterUtil
切完以后,我们需要将顺序打乱,所以我们调用了 sort 方法,至于比较器,我们使用 random 随机比较大小,这样我们就完成了我们的乱序操作,这里要新建一个 ImagePiece 类来保存图片以及索引。

7.初始化 item

Java实现Android拼图游戏设计过程解析

Item宽的计算:childWidth = (mWidth - mPadding * 2 - mMargin * (mColumn - 1) ) / mColumn;
容器的宽度,除去自己的内边距,除去Item间的间距,然后除以Item一行的个数就得到了Item的宽
接下来,就是遍历生成Item,根据他们的位置设置Rule

8.游戏图片的切换

要实现点击两个 Item,他们的图片能够发生交换,B 隐藏副本动画移动到 B 的位置;B 副本移动到 A 的位置

把图片设置为 B,把 B 副本移除,A 显示,这样就完美切合了,用户感觉是 B 移动过去的

B同上

9.游戏胜利的判断

Java实现Android拼图游戏设计过程解析

遍历所有的 Item,根据 Tag 拿到真正的索引和当然顺序比较,完全一致则胜利~~胜利以后进入下一关

10.游戏封面

添加一张背景图片,写入游戏名字(大家来拼图),再设置几个按钮,然后点击开始跳转到游戏内容界面。

项目效果展示:

Java实现Android拼图游戏设计过程解析

Java实现Android拼图游戏设计过程解析

Java实现Android拼图游戏设计过程解析

来源:https://blog.csdn.net/newlw/article/details/122978611?

标签:Java,Android,拼图,游戏,设计
0
投稿

猜你喜欢

  • mybatis createcriteria和or的区别说明

    2021-09-27 09:20:40
  • Java并发编程之ReadWriteLock读写锁的操作方法

    2023-12-07 20:08:37
  • UGUI绘制多点连续的平滑曲线

    2022-01-16 06:22:45
  • JAVA基本概念详解

    2022-06-09 11:54:53
  • Android采用双缓冲技术实现画板

    2022-05-28 15:55:58
  • 深入探讨Linux静态库与动态库的详解(一看就懂)

    2023-07-04 01:02:28
  • Android编程实现拍照功能的2种方法分析

    2023-10-16 19:02:25
  • Java使用DFA算法实现敏感词过滤的示例代码

    2022-10-21 00:56:13
  • Android百度地图定位后获取周边位置的实现代码

    2021-11-30 08:21:07
  • Android 游戏开发之Canvas画布的介绍及方法

    2021-12-14 23:10:54
  • JAVA NIO实现简单聊天室功能

    2023-05-01 10:32:49
  • Java面试题-实现复杂链表的复制代码分享

    2023-11-23 20:05:39
  • Java基于ShardingSphere实现分库分表的实例详解

    2022-04-20 18:43:37
  • MVPXlistView展示上拉下拉效果

    2022-10-30 10:45:38
  • Java实现将PDF转为图片格式的方法详解

    2022-08-21 07:03:36
  • Android编程实现圆角边框布局效果的方法

    2021-06-07 08:54:01
  • Redis 订阅发布_Jedis实现方法

    2023-11-10 03:38:41
  • spring与mybatis三种整合方法

    2021-11-27 22:00:46
  • Java保留两位小数的几种写法总结

    2022-04-19 06:53:06
  • Java聊天室之实现一个服务器与多个客户端通信

    2021-06-03 11:34:45
  • asp之家 软件编程 m.aspxhome.com