Javascript 选择一个六边形附近的六边形

Javascript 选择一个六边形附近的六边形,javascript,html4,hexagonal-tiles,Javascript,Html4,Hexagonal Tiles,我正在尝试选择给定范围内的所有六角体。然而,在实现Amit Patel的代码时,我得到了奇怪的结果 这就是我到目前为止所做的: var center = this._cel.copy( hex.coords ); var dx = range - center.q; var dy = range - center.r; var results = []; for (var q = -range; q <= dx; q++ ) {

我正在尝试选择给定范围内的所有六角体。然而,在实现Amit Patel的代码时,我得到了奇怪的结果

这就是我到目前为止所做的:

    var center = this._cel.copy( hex.coords );
    var dx = range - center.q;
    var dy = range - center.r;

    var results = [];

    for (var q = -range; q <= dx; q++ ) {
        var r1 = Math.max(-range, -q - range);
        var r2 = Math.min(range, -q + range);
        for ( var r = r1; r <= r2; r++ ) {
            //console.log( q, r, -q-r )
            var c = new Cell(q, r, -q-r) 
            results.push( c.add( center ) );
        }
    }
var center=this.\u cel.copy(hex.coords);
var dx=范围-中心.q;
var dy=范围-中心.r;
var结果=[];
对于(var q=-range;q s_diff){
q=-r-s;
}else if(r_diff>s_diff){
r=-q-s;
}否则{
s=-q-r;
}
返回此.set(q,r,s);
}
}
var Hex=函数(坐标系,l_){///[轴向],[笛卡尔],布局
this.coords=新单元(coords[0],coords[1],coords[2]);
这个。内容=-2;
this.pos=this.coords;///设置主坐标类型///
this.neights=[];
this.layout=l;
this.corners=[];
this.center=this.get_center_p();
//this.id=this.generate\u id(cart\u-coord);
此项。颜色={
“基础”:{
填写:“008844”,
边框:“FFDD88”,
},
“选定”:{
填充:“00cc00”
},
“悬停”:{
填充:“006600”
},
“路径”:{
填充:“80ff00”
},
“障碍”:{
填充:“86592d”
},
“邻居”:{
填充:“ffbf00”
}
}
此参数表示={
“选定”:false,
“悬停”:错误,
“isPath”:false,
“等状态”:假,
“isNeighbor”:false
}
这个。生成_角();
};
十六进制原型={
构造函数:Hex,
获取角点偏移:函数(角点){
var angle=2.0*Math.PI*(角点+此.布局.方向.起始角)/6;
返回新点([size.x*Math.cos(角度),size.y*Math.sin(角度)];
},
生成角点:函数(h){
var偏移=null,角度=0;
var size=this.layout.size;
对于(变量i=0;i<6;i++){
角度=2.0*Math.PI*(i+this.layout.orientation.start\u angle)/6;
偏移=新点([size.x*Math.cos(角度),size.y*Math.sin(角度)];
这个。弯。推(
新点([this.center.x+offset.x,this.center.y+offset.y])
);
}
},
绘图:函数(ctx){
var points=这一点;
ctx.beginPath();
移动到(点[0].x,点[0].y);
对于(变量i=1;i    var center = this._cel.copy( hex.coords );
    var dx = range - center.q;
    var dy = range - center.r;

    var results = [];

    for (var q = -range; q <= dx; q++ ) {
        var r1 = Math.max(-range, -q - range);
        var r2 = Math.min(range, -q + range);
        for ( var r = r1; r <= r2; r++ ) {
            //console.log( q, r, -q-r )
            var c = new Cell(q, r, -q-r) 
            results.push( c.add( center ) );
        }
    }
var cells = new Object();
for(x=-2; x<3; x++){
    cells[x] = new Object();
    for(y=-2; y<3; y++){
        cells[x][y] = new Object();
        for(z=-2; z<3; z++){
            cells[x][y][z] = cell;
        }
    }
}
var x = 0;
var y = 1;
var z = -1;
var neighbors = new Array();
neighbors.push(cells[x-1][y+1][z]);
neighbors.push(cells[x+1][y-1][z]);
neighbors.push(cells[x][y+1][z-1]);
neighbors.push(cells[x][y-1][z+1]);
neighbors.push(cells[x+1][y][z-1]);
neighbors.push(cells[x-1][y][z+1]);