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>

 

你可能感兴趣的:(js)