js 自制扫雷

<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"type="text/javascript"></script>
<script>
/**
 * author:xiaojiang
 * time:2013/1/6
 */
$(function(){
Array.prototype.hasItem = function(item){
    var i = 0;
    for(i in this)
       if(this[i] === item)
          return true; 
    return false;
}

var width = 10,
    height = 10,
    bombNum = 10,
    bombArr = [],
    mapArr = [];
    _isBomb = false,
    i = 0,
    j = 0,
    temp = '',
    html = '';
var _$table = $("<table></table>");
    while(i < bombNum){       //生成n个随机数
       temp = Math.floor(Math.random()*(width*height));
       if(!bombArr.hasItem(temp)){
           bombArr.push(temp);
           i++;
       }
    }

    html = '<table border="1">';
    for(var i=0; i<width;i++){    //生成地图数组
        html += '<tr height="20px">';
        mapArr[i] = new Array();
        for(j =0; j<height;j++){
            _id = i*10 + j; 
            _isBomb = bombArr.hasItem(_id) ? true : false;       
            mapArr[i][j] = {id:_id,isBomb:_isBomb,around:[]};
            html += '<td width="20px"></td>';
        }
        html += '</tr>';
    }
    html += '</table>';
    var _i = _j = 0, _$content = $("#contain");
    _$content.append(html);
    _$content.find("td").click(function(e){
        if($(this).data("hasClick")) return ;
        $(this).data("hasClick",true);
        _i = $(e.target).parent()[0].rowIndex;
        _j = e.target.cellIndex;
        if(!mapArr[_i][_j].isBomb){
            var _bombs = getRound(_i,_j);
            if(_bombs === 0){
                $(this).css({background:"red"});
                clickRound(_i,_j); 
            }else{
                $(this).css({background:"red"}).html(_bombs);
            }
        }else{
            alert('失败');
        }
    });

    function getRound(i,j){
        var bombNum = 0;
        for(var _i = -1; _i < 2; _i++){
           for(var _j = -1; _j<2; _j++){
               if(_i == 0 && _j == 0) continue;
               if( (_i+i < 0 || _j+j < 0) || ((_i+i) >= mapArr.length || (_j+j) >= mapArr[0].length) ) continue;
               mapArr[i][j]['around'].push([_i+i,_j+j]);
               if(mapArr[_i+i][_j+j].isBomb)
                   bombNum ++;
           }
        }
        return bombNum;
    }
    function clickRound(i,j){
        var aroundArr = mapArr[i][j]['around'];
        for(var y in aroundArr)
            _$content.find("tr").eq(aroundArr[y][0]).find('td').eq(aroundArr[y][1]).click();
    }
    window.rightclick = function(e){
       
       event.returnValue = false;
    }
});
</script>
<div id="contain" oncontextmenu="rightclick()">

</div>
</html>

 

posted @ 2013-01-06 00:44  ﹏Sakura  阅读(328)  评论(0编辑  收藏  举报