此篇为本系列文章第一篇,只为记下android小项目的是设计,实现过程。本文将首先介绍连连看项目的设计,以及涉及到的相关的内容与项目中所需算法.

本系列文章记录只是为了增加android项目实战经验,将所学的知识用于相应的项目开发当中。首先介绍一下android中连连看项目的架构及所用到的技术进行简要分析,框架基本如下图所示:

本程序主要包含两大模块:即(1)表示层模块;(2)后台逻辑模块;

其中表示层模块可以理解为游戏的UI及一些游戏辅助效果,表示层模块中,重要的是实现游戏的布局地图,项目中实现中,游戏的布局将使用自定义View的方式,在屏幕上贴图实现。而菜单模块及选关的dialog,只是为用户提供一些常见的选择,如重玩,过关继续,音效开关等等,为了有一个更好的用户交互环境,dialog的实现将通过自定义dialog的方式。而游戏音效是MediaPlayer在不同的状态场景下播放不同的游戏音效。

后台逻辑模块中,即时对于程序计算的实现与程序各种状态的监听,将是整个程序运行的基础。此模块中将实现对于游戏剩余时间限制和游戏状态的监听与处理。对于游戏剩余时间的监听,将开启单独的线程进行处理,从而不至于影响主程序逻辑的运行;游戏的状态的监控处理中,将会实现对于连通的两个图标的消除(即游戏界面的更新),游戏输赢的监听判断,游戏暂停与否等(暂停状态需要同时将剩余时间暂停,而时间监听线程需要知道所处状态,此二者紧密联系)。对于本程序中最重要的还是程序中核心算法模块的实现,在游戏中,最主要的算法是判断两个选中的图标是否能够连通,其余两个算法也依赖于此算法而进行。下面着重介绍一下连接算法:

  在介绍连接算法之前,先简单介绍一下连连看的布局算法,为了简单起见,我们使用4*4的棋盘,假设棋子有四种:

首先在程序初始化时,我们先将要加载的图片在棋盘上按序绘制出来,注意每一种图标我们绘制的时候需要一次性绘制两次,这样,才能保重绘制出来的每种图标的个数都是偶数个。假设最初如下图(1):

图(1)最初绘制 图(2)调换后棋盘

这样绘制后,我们进行一次遍历,随机的调换棋盘中的图标(是现有棋盘中的图标之间的调换,并不是更改成为其他的图标)。经过调换的棋盘可能如图(2)所示这样就完成了棋盘的初始化,当然我们的棋盘在最外面一层中是不添加图标的,为的是我们连线时候能够使用最外层画线,而不会出现穿过图标画线的情况,棋盘如下图:

  现在看看连接算法的原理:

首先两个图标能够连接的充分条件是:(1)两个图标是相同的;(2)两个图标之间有一条路相连,其中这条“路上”没有其他的图标“阻碍”;(3)这一条路不能有两个以上的拐角;满足这三个条件即可认为两个图标是相连通的;对于连通的判断中,图标连通时有三种情况,分为以下:

(1)直线型:这就是横向或者是纵向方向判断即可,这种情况最容易判断,只要两者之间没有其他图标即可,就不多说;

(2)一折型:其实在两个选中图标确定的两个对角顶点画一个矩形,若是其余两个顶点中有能够满足与两个选中图标都能够“直线型”相连的,即可认为此两个选中图标可以相连,实例如下,判断两个红色的图标相连的情况:

                  一折型的示例

(3)二折型:对于二折型的判断是重点。判断二折型主要是做两个方向的扫描,即横向扫描与纵向扫描:

首先说横向扫描:

需要判断的两个红色图标 进行横向扩展 扩展中两点能够满足直线型相连

横向扫描中:首先将两个需要判断的比图标进行横向的扩展,扩张规则是在没有遇到其他图标时一直扩展,知道遇到此行的其他图标或者到达棋盘的边缘,扩展后的点如图中X表示,如果扩展后的点种能够存在两点满足直线型相连通的情况,即可判断两个图标是可以相连通的,连通的画线也是根据这两个辅助点相连而成的;

类似的,对于纵向扫描中:

需要判断的两个红色图标 进行纵向扩展 扩展中存在两点能够满足”直线型“

连连看连接算法到此也算完成了,至于hint的帮助算法,判断当前棋盘是否还有解的算法都是依赖于次算法。

    此项目文章下一步将是进行每一个功能模块及算法的一步步实现。之所以写本系列的文章,为了记录android小项目的经历,增加实战的能力,做个总结。并不是为了做出多么新颖的项目,当然也向不少的网友学习了!

更多相关文章

  1. APP批量自动生成各种不同分辨率尺寸图标和启动页(Android和iOS都
  2. Android的Google官方设计指南(上)
  3. Android之获得已安装程序列表
  4. 两个Android工程之间的调用
  5. Android和.NET通用的DES算法
  6. Android数据加密DES、3DES、AES
  7. Android实现再图标右上角显示数字
  8. Android,APP图标尺寸
  9. Android(安卓)4.0为Launcher主界面所有应用程序图标添加统一背景

随机推荐

  1. Androd Html Demo js与java相互调用
  2. Android(安卓)中的设置关于手机中的型号
  3. mac下Android(安卓)apk 破解流程
  4. Android(安卓)Bundle类
  5. [Android(安卓)Pro] Android签名与认证详
  6. android 设置无标题
  7. ANDROID 开发资源网站列表(2008年1月14日)
  8. Gson解析(详解)
  9. Android(安卓)SDK Manager无法更新的解决
  10. android调节屏幕亮度