// Path: LinkupCore/src/com/znv/linkup/core/map/template/MapTemplate.java
// public class MapTemplate extends BaseMap {
//     private static final long serialVersionUID = -8030816635103999967L;
// 
//     protected MapTemplate() {
//     }
// 
//     public MapTemplate(int ySize, int xSize) {
//         this(ySize, xSize, 0, 0);
//     }
// 
//     public MapTemplate(int ySize, int xSize, int empty, int obstacle) {
//         super(ySize, xSize);
//         this.EmptyCount = empty;
//         this.ObstacleCount = obstacle;
//         this.Data = new Byte[ySize][xSize];
// 
//         initTemplate();
//     }
// 
//     protected void initTemplate() {
//         for (int i = 0; i < YSize; i++) {
//             for (int j = 0; j < XSize; j++) {
//                 if (i == 0 || i == YSize - 1 || j == 0 || j == XSize - 1) {
//                     Data[i][j] = GameSettings.GroundCardValue;
//                 } else {
//                     Data[i][j] = GameSettings.GameCardValue;
//                 }
//             }
//         }
//     }
// 
//     @Override
//     protected boolean isRefresh(int i, int j) {
//         return Data[i][j] != GameSettings.GroundCardValue;
//     }
// 
//     /**
//      * 根据地图模版配置字符串解析出地图模版
//      * 
//      * @param strMapTemp
//      *            地图模版配置字符串
//      * @return 地图模版
//      */
//     public static MapTemplate parse(String strMapTemp) {
//         try {
//             MapTemplate tpl = new MapTemplate();
//             String map = strMapTemp;
//             String[] data = map.split("\\$");
//             String[] strnm = data[0].split("\\*");
//             tpl.YSize = Integer.parseInt(strnm[0]);
//             tpl.XSize = Integer.parseInt(strnm[1]);
//             tpl.Data = new Byte[tpl.YSize][tpl.XSize];
//             String[] rowData = data[1].split(";");
//             String[] cellData = null;
//             for (int i = 0; i < rowData.length; i++) {
//                 cellData = rowData[i].split(",");
//                 for (int j = 0; j < cellData.length; j++) {
//                     tpl.Data[i][j] = convertValue(Byte.parseByte(cellData[j]));
//                 }
//             }
//             return tpl;
//         } catch (Exception ex) {
//             ex.printStackTrace();
//         }
//         return null;
//     }
// 
//     public static Byte convertValue(Byte bValue) {
//         return (byte) (bValue > 0 ? 1 : (bValue < 0 ? bValue : 0));
//     }
// 
//     protected int EmptyCount;
//     protected int ObstacleCount;
// }
// 
// Path: LinkupCore/src/com/znv/linkup/core/map/template/RandomTemplate.java
// public class RandomTemplate extends MapTemplate {
//     private static final long serialVersionUID = -4260503758055093714L;
// 
//     public RandomTemplate(int ySize, int xSize) {
//         super(ySize, xSize);
//     }
// 
//     public RandomTemplate(int ySize, int xSize, int emptyCount, int obstacleCount) {
//         super(ySize, xSize, emptyCount, obstacleCount);
//     }
// 
//     @Override
//     /**
//      * 随机产生可以成功配对消除完成的地图模版
//      */
//     protected void initTemplate() {
//         int empty = EmptyCount;
//         int obstacle = ObstacleCount;
//         // 必须保证 Rows * Colomns - EmptyCount - ObstacleCount 为偶数
//         if (empty + obstacle < YSize * XSize) {
//             for (int i = 0; i < YSize; i++) {
//                 for (int j = 0; j < XSize; j++) {
//                     if (i == 0 || i == YSize - 1 || j == 0 || j == XSize - 1) {
//                         Data[i][j] = GameSettings.GroundCardValue;
//                     } else {
//                         if (empty > 0) {
//                             Data[i][j] = GameSettings.EmptyCardValue;
//                             empty--;
//                         } else if (obstacle > 0) {
//                             Data[i][j] = GameSettings.ObstacleCardValue;
//                             obstacle--;
//                         } else {
//                             Data[i][j] = GameSettings.GameCardValue;
//                         }
//                     }
//                 }
//             }
//         }
// 
//         // 随机排列
//         randomRefresh();
//     }
// }


import com.znv.linkup.core.map.template.MapTemplate;
import com.znv.linkup.core.map.template.RandomTemplate;
package com.znv.linkup.core.map;


/**
 * 随机地图类
 * 
 * @author yzb
 * 
 */
public class RandomMap extends GameMap {
    private static final long serialVersionUID = -3788653825318577597L;

    public RandomMap(int rows, int cols) {
        this(new RandomTemplate(rows, cols));
    }

// Path: LinkupCore/src/com/znv/linkup/core/map/template/MapTemplate.java
// public class MapTemplate extends BaseMap {
//     private static final long serialVersionUID = -8030816635103999967L;
// 
//     protected MapTemplate() {
//     }
// 
//     public MapTemplate(int ySize, int xSize) {
//         this(ySize, xSize, 0, 0);
//     }
// 
//     public MapTemplate(int ySize, int xSize, int empty, int obstacle) {
//         super(ySize, xSize);
//         this.EmptyCount = empty;
//         this.ObstacleCount = obstacle;
//         this.Data = new Byte[ySize][xSize];
// 
//         initTemplate();
//     }
// 
//     protected void initTemplate() {
//         for (int i = 0; i < YSize; i++) {
//             for (int j = 0; j < XSize; j++) {
//                 if (i == 0 || i == YSize - 1 || j == 0 || j == XSize - 1) {
//                     Data[i][j] = GameSettings.GroundCardValue;
//                 } else {
//                     Data[i][j] = GameSettings.GameCardValue;
//                 }
//             }
//         }
//     }
// 
//     @Override
//     protected boolean isRefresh(int i, int j) {
//         return Data[i][j] != GameSettings.GroundCardValue;
//     }
// 
//     /**
//      * 根据地图模版配置字符串解析出地图模版
//      * 
//      * @param strMapTemp
//      *            地图模版配置字符串
//      * @return 地图模版
//      */
//     public static MapTemplate parse(String strMapTemp) {
//         try {
//             MapTemplate tpl = new MapTemplate();
//             String map = strMapTemp;
//             String[] data = map.split("\\$");
//             String[] strnm = data[0].split("\\*");
//             tpl.YSize = Integer.parseInt(strnm[0]);
//             tpl.XSize = Integer.parseInt(strnm[1]);
//             tpl.Data = new Byte[tpl.YSize][tpl.XSize];
//             String[] rowData = data[1].split(";");
//             String[] cellData = null;
//             for (int i = 0; i < rowData.length; i++) {
//                 cellData = rowData[i].split(",");
//                 for (int j = 0; j < cellData.length; j++) {
//                     tpl.Data[i][j] = convertValue(Byte.parseByte(cellData[j]));
//                 }
//             }
//             return tpl;
//         } catch (Exception ex) {
//             ex.printStackTrace();
//         }
//         return null;
//     }
// 
//     public static Byte convertValue(Byte bValue) {
//         return (byte) (bValue > 0 ? 1 : (bValue < 0 ? bValue : 0));
//     }
// 
//     protected int EmptyCount;
//     protected int ObstacleCount;
// }
// 
// Path: LinkupCore/src/com/znv/linkup/core/map/template/RandomTemplate.java
// public class RandomTemplate extends MapTemplate {
//     private static final long serialVersionUID = -4260503758055093714L;
// 
//     public RandomTemplate(int ySize, int xSize) {
//         super(ySize, xSize);
//     }
// 
//     public RandomTemplate(int ySize, int xSize, int emptyCount, int obstacleCount) {
//         super(ySize, xSize, emptyCount, obstacleCount);
//     }
// 
//     @Override
//     /**
//      * 随机产生可以成功配对消除完成的地图模版
//      */
//     protected void initTemplate() {
//         int empty = EmptyCount;
//         int obstacle = ObstacleCount;
//         // 必须保证 Rows * Colomns - EmptyCount - ObstacleCount 为偶数
//         if (empty + obstacle < YSize * XSize) {
//             for (int i = 0; i < YSize; i++) {
//                 for (int j = 0; j < XSize; j++) {
//                     if (i == 0 || i == YSize - 1 || j == 0 || j == XSize - 1) {
//                         Data[i][j] = GameSettings.GroundCardValue;
//                     } else {
//                         if (empty > 0) {
//                             Data[i][j] = GameSettings.EmptyCardValue;
//                             empty--;
//                         } else if (obstacle > 0) {
//                             Data[i][j] = GameSettings.ObstacleCardValue;
//                             obstacle--;
//                         } else {
//                             Data[i][j] = GameSettings.GameCardValue;
//                         }
//                     }
//                 }
//             }
//         }
// 
//         // 随机排列
//         randomRefresh();
//     }
// }


// Path: LinkupCore/src/com/znv/linkup/core/map/RandomMap.java
import com.znv.linkup.core.map.template.MapTemplate;
import com.znv.linkup.core.map.template.RandomTemplate;

package com.znv.linkup.core.map;


/**
 * 随机地图类
 * 
 * @author yzb
 * 
 */
public class RandomMap extends GameMap {
    private static final long serialVersionUID = -3788653825318577597L;

    public RandomMap(int rows, int cols) {
        this(new RandomTemplate(rows, cols));
    }

    public RandomMap(MapTemplate template) {