二维数组旋转

最近要涉及到随机地图问题,其中一些元素模块为固定结构,相当于二维集合,因为设计上出口元素比较固定,放置到地图上根据位置不同需要调整其方向,比如默认出口都是在上方,当把其放置于地图最上方位置时出口便不太合适了,所以需要把它旋转九十度来使用,随便搜索了一下,人家的说法都好高端啊,咱是看不懂,然后笨人有笨法子:

/**
 * 0 随机旋转
 * 1 逆时针90度
 * 2 顺时针90度
 * 3 旋转180度
 * */
private changeF(arr,f):any[]{
    if(f == 0){
        this.changeFarr(arr,Math.ceil(Math.random()*4));
    }else {
        this.changeFarr(arr,f);
    }
    return arr;
}

private changeFarr(arr,f):any[]{
    var h = arr.length;
    var w = arr[0].length;
    var temarr:any[] = [];
    if(f == 1){
        for(var i=0;i<w;i++){
            var temarr1:any[] = [];
            for(var j=0;j<h;j++){
                temarr1.push(arr[j][w-i-1]);
            }
            temarr.push(temarr1);
        }
    }else if (f==2){
        for(var i=0;i<w;i++){
            var temarr2:any[] = [];
            for(var j=0;j<h;j++){
                temarr2.push(arr[h-j-1][i]);
            }
            temarr.push(temarr2);
        }
    }else if (f==3){
        for(var i=0;i<h;i++){
            var temarr3:any[] = [];
            for(var j=0;j<w;j++){
                temarr3.push(arr[h-i-1][w-j-1]);
            }
            temarr.push(temarr3);
        }
    }
    return arr;
}

本文作者:依十七  本文链接:http://www.is17.com/419/

本站文章若无特别说明,皆为原创,如需转载,请以超链接形式注明作者和原始出处及本声明

发布者

依十七

风逝难依,陌归十七。

发表评论

电子邮件地址不会被公开。 必填项已用*标注