再次说明一下,我们的华容道的最终版本是图像华容道,不是纯数字的华容道,难度当然要比纯数字版的华容道大多了,因为在玩的时候要记住整福图像以及被切分后,每一张小图片应该在什么位置,如果是一幅您不熟悉的图片的话,是很考察观察力和记忆力的。

但是无论是图片版也好,数字版也好,我们实现的本质都是一样的。

我们先说数字版的华容道怎么判断已经还原。

还原状态也就是初始状态,1234,5678,9 10 11 12,13 14 15

只要判断对应的数字是不是在对应的位置就知道了,即判断数字1是不是在1号位,2是不是在2号位,以此类推,所以要最多判断15次可以判断出是否还原。

我们的图像版华容道也一样,仍然是判断每个小图像是否在自己的正确位置,可以回忆一下我们的代码,我们代码中是用一个puzzles数组来存放这些图像块的,而每一个数组中的元素是一个img_puzzle对象,该对象除了存储bitmap对象之外,还有一个原始的位置pos,这个pos从0到15,第15是一个空白图像。

当经过一阵手指移动后,图像块的原始位置就发生了变化,即puzzles数组中的元素进行了交换,参考上一篇博文。虽然发生了交换,但是元素对象本身的bitmap和pos都不会发生变化,也就是说,只是他们在puzzles数组中的位置发生了变化,从而显示出来的整个图片也就是乱序的了。

所以检测我们的图像华容道是否还原就很简单了,遍历puzzles数组,判断每个数组中的元素是否处于初始的位置。代码如下:

for(int i=0;i<bit_num;i++){

if(puzzles[i[].pos !=i)

return false;

}

return true;

所以,在成功还原的情况下,需要比较15次。

Android华容道之一步一步实现-6-还原状态检测相关推荐

  1. Android华容道之一步一步实现-4-图像块移动算法

    下一个关键点就是图像块的移动,以如图为例. 假设空格处于第二行第三格,那么此时只有触摸第二行以及第三列的图像块的时候才需要移动图像块,因为别的图像块不能移动. 当触摸发生在合法的图像块的时候,即上面图 ...

  2. Android华容道之一步一步实现-3 -手指触摸处理

    华容道关键点之一出现了,就是处理触摸,包括手指按下,抬起,移动等. 自己实现一个处理触摸的类,然后处理 onTouchEvent(MotionEvent event) 事件,在这里处理手指按下,抬起, ...

  3. Android华容道之一步一步实现-2-图片分割

    因为华容道是16个格子,所以要把一张大一点的图片分割成16个相等的小图片. 可以使用Bitmap.createBitmap方法来进行. 直接上代码 ori_bitmap = BitmapFactory ...

  4. Android华容道之一步一步实现-序言

    女儿看了最强大脑的数字华容道节目之后,就缠着要玩数字华容道,买了实物版,玩了几天,感觉好像还没有过瘾,就让我做个手机版的数字华容道游戏. 说明一下,最终要实现的版本并不是最强大脑那种数字版的华容道,而 ...

  5. 一步一步教你在 Android 里创建自己的账号系统(一)

    大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 大家在 ...

  6. 一步一步学ROP之Android ARM 32位篇

    蒸米 · 2015/12/17 9:41 0x00 序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术,可以用来绕过现代操作系统的各种 ...

  7. Android一步一步实现一款实用的Android广告栏

    源码:BannerLayoutDemo 有图有真相: bannerLayoutDemo 开源界有一句很有名的话叫"不要重复发明轮子",当然,我今天的观点不是要反驳这句话,轮子理论给 ...

  8. 一步一步教你如何在AndroidStudio查看Android源码(AOSP源码)

    一步一步教你如何在AndroidStudio查看Android源码(AOSP源码) idegen工具 要将Android系统源代码工程导入到Eclipse或者IntelliJ IDEA,关键是要有相应 ...

  9. 2020最新版Android一步一步教轻松通过ArcSoft虹软平台实现人脸识别功能,保姆级别教程?

    Android实现人脸识别功能 第一步:注册并认证成为开发者. 第二步:创建应用 1.认证成功后,我们就可以开始创建应用. 2,填写信息 3.点击添加SDK 4.选择人脸识别 5.选择情况,如图所示. ...

  10. Android自定义View教你一步一步实现薄荷健康滑动卷尺

    前言 前几天写了一篇一步一步教你实现即刻点赞效果后,实现点赞效果主要是自己对自定义View的一些canvas绘制,缩放知识,位移的理解.而朋友说HenCoder还有给出薄荷健康滑动卷尺,小米运动记录界 ...

最新文章

  1. 音频编辑大师 3.3 注冊名 注冊码
  2. Unity 2D游戏开发教程之为游戏场景添加多个地面
  3. sql server2005 出现一个或多个参数无效
  4. mysql查询大于等于效率_mysql 中4 OR 6的效率要大于 !=5?
  5. get\post常用参数使用说明
  6. 快速入门人工智能的方法,持续更新ing
  7. 心电图分析软件_动态心电图品牌排行榜
  8. 王道训练营3月11日
  9. debian nvidia 安装_Debian安装Nvidia显卡驱动
  10. 粉刷匠计算机音乐,音乐《粉刷匠》
  11. Codeforces Round #362 (Div. 2) E. PLEASE(数论 + 递推)
  12. Low-Light Image and Video Enhancement Using Deep Learning: A Survey 论文阅读笔记
  13. Partial Multi-Label Learning(PML)-文献学习
  14. [论文笔记] Balboa: Bobbing and Weaving around Network Censorship
  15. 1370. Increasing Decreasing String
  16. mysql修改配置文件进行优化
  17. 基于色彩恒常( color constancy)特性的Frankle-McCann Retinex图像增强
  18. 高效能人士的七个习惯 与成功有约
  19. 苹果使用过程中的小技巧(合集)
  20. 女神节快乐!Apache Pulsar 愿大家拥抱机遇、享受开源

热门文章

  1. redis php 守护进程,PHP守护进程利用Redis队列实现业务
  2. python 中cookie_Python 处理Cookie的菜鸟教程(一)Cookie库
  3. 如何优雅的实现pandas DataFrame 和spark dataFrame 相互转换
  4. python 条形图图注怎么集中注意力_如何用每个条形图的总和(Matplotlib)注释堆积条形图?...
  5. 161. Leetcode 55. 跳跃游戏 (贪心算法-贪心区间)
  6. scala外部传入时间参数-亲测有效
  7. zip与zip(*)
  8. 机器学习笔记:CNN卷积神经网络
  9. 《数据中台实战》:数据中台的分层建模体系
  10. 深度学习核心技术精讲100篇(三十六)-EdgeRec:边缘计算在淘宝推荐系统中的大规模应用