小弟我的Android进阶之旅->Android疯狂连连看游戏的实现之实现游戏逻辑(五)

我的Android进阶之旅------Android疯狂连连看游戏的实现之实现游戏逻辑(五)在上一篇《我的Android进阶之旅

我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)
在上一篇《我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)》中提到的两个类:

    GameConf:负责管理游戏的初始化设置信息。GameService:负责游戏的逻辑实现。
其中GameConf的代码如下:cn\oyp\link\utils\GameConf.java


下面是获取某个坐标点四周通道的四个方法:


当p2位于p1右上角时候,应该计算p1的右通道和p2的下通道是否有交点,p1的上通道和p2的左通道是否有交点。当p2位于p1右下角时候,应该计算p1的右通道和p2的上通道是否有交点,p1的下通道和p2的左通道是否有交点。下面是具体是实现方法getCornerPoint(Point point1, Point point2, int pieceWidth,
int pieceHeight)的代码:


当p1与p2位于同一行不能直接相连,这两个点既可以在上面相连,也可以在下面相连,这两种情况都代表他们可以相连,先把这两种情况加入到结果中,最后去计算最近的距离。

实现时先构建一个Map,Map的key为第一个转折点,Map的value为第二个转折点,如果Map的size()大于1,说明这两个Point有多种连接途径,那么程序还需要计算路径最小的连接方式。

2)p1、p2位于同一行,不能直接相连,就必须有两个转折点,如上图所示。

当p1与p2位于同一列不能直接相连,这两个点既可以在左边相连,也可以在右边相连,这两种情况都代表他们可以相连,先把这两种情况加入到结果中,最后去计算最近的距离。

实现时先构建一个Map,Map的key为第一个转折点,Map的value为第二个转折点,如果Map的size()大于1,说明这两个Point有多种连接途径,那么程序还需要计算路径最小的连接方式。

3)p2位于p1右下角的六种转折情况,如下图所示:小弟我的Android进阶之旅->Android疯狂连连看游戏的实现之实现游戏逻辑(五)小弟我的Android进阶之旅->Android疯狂连连看游戏的实现之实现游戏逻辑(五)
小弟我的Android进阶之旅->Android疯狂连连看游戏的实现之实现游戏逻辑(五)
定义一个方法来处理上面具有两个连接点的情况,getLinkPoints(Point point1, Point point2,
int pieceWidth, int pieceHeight),代码如下所示:
/** * 计算List<Point>中所有点的距离总和 *  * @param points *            需要计算的连接点 * @return 所有点的距离的总和 */private int countAll(List<Point> points) {int result = 0;for (int i = 0; i < points.size() - 1; i++) {// 获取第i个点Point point1 = points.get(i);// 获取第i + 1个点Point point2 = points.get(i + 1);// 计算第i个点与第i + 1个点的距离,并添加到总距离中result += getDistance(point1, point2);}return result;}/** * 获取两个LinkPoint之间的最短距离 *  * @param p1 *            第一个点 * @param p2 *            第二个点 * @return 两个点的距离距离总和 */private int getDistance(Point p1, Point p2) {int xDistance = Math.abs(p1.x - p2.x);int yDistance = Math.abs(p1.y - p2.y);return xDistance + yDistance;}

关于具体的实现步骤,请参考下面的链接:

    我的Android进阶之旅------>Android疯狂连连看游戏的实现之游戏效果预览(一)
    我的Android进阶之旅------>Android疯狂连连看游戏的实现之开发游戏界面(二)
    我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)

    ==================================================================================================

      作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

      转载请保留原文地址:http://blog.csdn.net/ouyang_peng

    ==================================================================================================