首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

(C/C++来看)请问一个连连看的布局算法

2012-02-14 
(C/C++高手进来看)请教一个连连看的布局算法最好能写成模板,生成的布局我可以自己做,如果没有就自动生成普

(C/C++高手进来看)请教一个连连看的布局算法
最好能写成模板,生成的布局我可以自己做,如果没有就自动生成普通的布局也行!!!

[解决办法]

Java code
    /**     * @param m     *            将要创建地图的行     * @param n     *            将要创建地图的列     * @param type     *            地图中不同图片种类的数量     * @return 返回一个二维的整型数组用于表示地图     * @param 注意:     * @param 前两个参数至少要有一个偶数,为了连连看能够配对.     * @param 不在这里添加参数m,n的奇偶校验是为了写成通用方法.     */    public static byte[][] createMap(byte m, byte n, byte type) {        byte[][] map = new byte[m][n];        for (byte i = 0; i < m; i++) {            for (byte j = 0; j < n; j++) {                map[i][j] = (byte) (j % type);            }        }        return map;    }    /**     * @param map     * @param 函数功能:打乱地图     * @param x,y随机坐标     */    public static void swap(byte[][] map) {        byte m = (byte) map.length;        byte n = (byte) map[0].length;        byte x, y;// 记录坐标        for (byte i = 0; i < m; i++) {            for (byte j = 0; j < n; j++) {                x = (byte) rand.nextInt(m);                y = (byte) rand.nextInt(n);                /**                 * 当 i==x && j==y 的时候,异或交换的结果是0,会丢失原数,所以要加个判断                 * 当然也可以不用异或,再定义个变量来交换                 */                if (i != x || j != y) {                    map[i][j] ^= map[x][y];                    map[x][y] ^= map[i][j];                    map[i][j] ^= map[x][y];                }            }        }    }
[解决办法]
download.csdn.net/source/446854 

代码+文档,参考一下
[解决办法]
每个坐标可以 用1bit表示 省空间
可以隔行 或 倾斜行 或 空缺

思路告诉你: 你计算布局的量RealNum 比如32 实际棋盘量FullSize 48
那么就对 一个 32大小的 棋子数组乱序 然后 依次放入 RealSize大小的布局中

简单快速

热点排行