使用for循环创建gridmap

时间:2016-04-20 14:25:37

标签: java algorithm for-loop

我创建了一个for循环来生成网格图。当我单击地图上的每个网格时,我得到网格的X和Y.当地图宽度大于地图长度时,一切都很好,但是当尝试创建长度大于的地图时,返回的x变为y,y变为x。问题在于创建地图时的第二个for循环,但我无法弄明白。

 $(document).ready(function(){

 $("#slide-right").on( "click", function(event){
    event.stopImmediatePropagation
    slide('right');

});

$("#slide-left").on( "click", function(event){
    event.stopImmediatePropagation
    slide('left');

});
});

function slide(direction){

if($("#slide_container").hasClass("animating")) {
return false;
}else{
$("#slide_container").addClass("animating");
}

var slider_width = $("#slide_container").width();
$( ".slide" ).each(function( index ) {

    var elmnt_left = $(this).position().left;
    //alert(this.id)

    var val = 100 * elmnt_left / slider_width;
    var percentage = 0;

    // direction slide to left
    if(direction == 'left'){
        if(index == 0) {
            if(val > -100)
                percentage = val - 60;
        }           
        else if(index == 1) {
            if(val > -40)
                percentage = val - 60;
        }               
        else if(index == 2){
            if(val > 20)
                percentage = val - 60;
        }
    }else if (direction == 'right'){ // direction slide to right
        if(index == 0) {
            if(val < 20 )
                percentage = val + 60;
        }           
        else if(index == 1) {
            if(val < 80)
                percentage = val + 60;
        }               
        else if(index == 2){
            if(val < 140)
                percentage = val + 60;
        }
    }   

    console.log()

    if(percentage !== 0){   
        $( this ).animate({
            left: percentage+'%'
        }, 400, function() {
            // Animation complete.
             $("#slide_container").removeClass("animating");
        });
    }

   });
};

地图看起来像这样:

enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

好吧,也许我并不了解你的期望,但我不认为你必须针对mapWidth&lt; mapLength。 此外,除了使用CPU资源之外,我没有得到你打算用嵌套循环做什么?

    for(int j=0; j<i+1; j++){
        x = j % mapLength;
    }

当它离开时,您将始终拥有x = i % mapLength

此外,正如flkes所说,为什么不使用嵌套循环?

for (int y=0; y < mapLength; y++) {
    for(int x=0; x < mapWidth; x++){
       GridPanel gb = new GridPanel(x, y);
       list.add(gb);
       mapPanel.add(gb);
    }
}  

答案 1 :(得分:1)

你可以尝试这段代码:

for (int i = 0; i < mapWidth * mapLength; i++) {
    y = i / mapLength;
    x = i % mapLength;

    GridPanel gb = new GridPanel(x, y);
    list.add(gb);
    mapPanel.add(gb);
}