问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jQuery怎样实现扫雷

发布网友 发布时间:2022-04-26 13:38

我来回答

1个回答

热心网友 时间:2022-04-22 17:24

1)jquery.tableGen.js,这段js的作用是产生一个表格,表格中显示数字和雷区,调用的方法很简单,如下:

var options ={
rows:5,
cols:5,
percent:0.1
};

$("table").tableGen(options);  

思路是:根据table的单元格的数目随机产生percent的雷,并填充td。然后遍历所有的td,查找周围雷的个数来填充单元格的数字

[javascript] view plain copy

var neigUp = new Array();  

var neig = new Array();  

var neigDw = new Array();  

var cols,rows;  

var table,tds;  

var colors =["black","blue","red","orange","yellow","green","black","black"];   var mineNum ;  

function($){  

var randoms = function(max,percent){  

// General digital between 0 and max num times  

if(!max)max =100;  

if(!percent) percent =0.1;  

num = max*percent;  

var i=0;  

var arr = new Array();  

while(i<num)   arr[i++]=Math.floor(Math.random()*max);  

return arr;  

}     

$.fn.tableGen = function(options){  

var setting = $.extend({  

rows:10,  

cols:10,  

percent:0.1           

},options || {}  

);  

rows = setting.rows;  

cols = setting.cols;  

neigUp = [-(cols+1),-cols,-(cols-1)];  

neig =[-1,1];  

neigDw =[cols-1,cols,cols+1];     

var str = "";  

for(var j=0;j<setting.rows;j++){  

str+="<tr>";  

for(var i=0;i<setting.cols;i++){  

str+="<td>"+i+"</td>";  

}  

str+="</tr>";  

}  

this.empty();     

this.append(str);  

$("td",this).addClass("org");       // orginal color  

//fill  

var arr = randoms(setting.rows*setting.cols,setting.percent);  

tds = $("td",this);  

mineNum = arr.length;  

for(var i=0;i<arr.length;i++){  

$(tds[arr[i]]).addClass("mine").html("<span>"+"*"+"</span>").find("span").css("opacity",0);  

}  

// add tips number to regular cells       

var $this =this;  

tds.each(function(i){  

if($(this).text() == "*") return;  

var cnt = 0;  

var seq = i;  

for(var i=0;i<neig.length;i++){  

var p = neig[i]+seq;  

if(tds[p]&&Math.floor(p/cols) == Math.floor(seq/cols) && $(tds[p]).text() == "*") cnt++;  

}  

for(var i=0;i<neigUp.length;i++){  

var p = neigUp[i]+seq;  

if(tds[p]&&Math.floor(p/cols)+1 == Math.floor(seq/cols )&& $(tds[p]).text() == "*") cnt++;  

}  

for(var i=0;i<neigDw.length;i++){  

var p = neigDw[i]+seq;  

if(tds[p]&&Math.floor(p/cols)-1 == Math.floor(seq/cols) && $(tds[p]).text() == "*") cnt++;  

}         

if(!cnt)    { cnt = ""; colors[""]="";}  

$(this).html("<span>"+cnt+"</span>").css("color",colors[cnt]).find("span").css("opacity",0);  

});   

tds.addClass("mark");  

} // tableGen Fn end  

)(jQuery);  

$.fn.fill = function(){  

table = $(this);  

tds =$("td",table);  

var mineCnt = 0;  

tds.click(function(event){  

if($(this).text() != "*"){  

if(event.altKey){  

tds.removeClass("mark").find("span").css("opacity",1);  

var rs = confirm("No Bomb here !Bad Luck,Try Again?");  

if(rs){  

table.tableGen(options).fill();  

}         

return;  

}  

}  

if($(this).text() == "*"){  

$(this).removeClass("mark").find("span").css("opacity",1);  

var event = event || window.event;  

if(event.altKey){  

mineCnt++;  

if(mineCnt == mineNum){  

var rs = confirm("congratulations!Try Again?");  

if(rs){  

table.tableGen(options).fill();  

}         

return;  

}  

return;  

}  

// Game over  

tds.removeClass("mark").find("span").css("opacity",1);  

var rs = confirm("Bomb!Bad Luck,Try Again?");  

if(rs){  

table.tableGen(options);  

table.fill();  

}                 

}  

else if($(this).text() !="*" && $(this).text() !=""){  

$(this).removeClass("mark").find("span").css("opacity",1);  

}  

else  

recover($(this),tds);             

});       

};    

})(jQuery);  

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024智能手表购买攻略:高性价比榜单揭晓,苹果VS华为VS小米VS佳明VS OP... apple watch os3怎么样 苹果watchOS3.0评测介绍_apple watch os3怎 ... 嘉兴有什么好玩的微信公众平台 嘉兴平湖有哪些论坛 海宁海宁论坛 嘉兴最有名的论坛是什么 嘉兴的网有哪些 荣誉勋章血战太平洋存档放哪 求荣誉勋章血战太平洋的通关存档 荣誉勋章之血战太平洋一般存盘文件夹在C盘的那里 用JQuery实现全选与取消的两种简单方法 &#xF31D;&#xF31D;这个表情包怎么才可以下载到? 如何用jquery实现替换? 用jQuery如何实现 刚开始和女孩怎样聊天 Jquery是怎么实现的?? 请问bilibili有官方的表情包下载吗? 谈恋爱刚开始应该怎么和女生聊天呢? 求表情包在哪下 jquery的实现 jquery如何实现 jQuery内部原理和实现方式浅析 一开始怎么和女孩子聊起来 从三亚湾到蜈支洲岛要多长时间? 三亚蜈支洲岛怎么样,好玩吗? 三亚的亚龙湾和蜈支洲岛要门票吗? 蜈支洲岛一日游价格 从三亚到蜈支岛是需要坐船的吗?需要坐多久?那里坐?船票多少钱? bothermfc1818打印机怎么安装 brotherMFC-1818打印机墨粉安装为什么一直更换墨粉 给朋友圈评论时,怎么只有系统自带的表情? 如何增加表情。 我在微信中下载了很多表情,可怎么在评论的 jQuery实现数字加减效果汇总 如何用jquery实现点击div更换class? 百度里人家评论里的这种大表情怎么下载,想要它的大表情高解析。怎么弄? 大家聊天时的表情包都是从哪儿下载的? jquery怎么实现从右到左滑出来的效果? 招行借记卡每天最多转账多少 招商银行网银转账一次最多能转多少钱? 招商银行私人银行卡一次可以转帐多少? 你的任天堂Switch游戏机需要哪些配件?Nintendo Switch 配件推荐 任天堂switch的游戏配件买哪个牌子的靠谱? 任天堂游戏机有配高清线吗 任天堂游戏机switch饰带的功能用途 2015年十月中国银行定期存款利率是多少 中国银行2015年存10万3年定期的利息是多少? windows2003产品密匙 请问中国银行的定期存款利率是多少?(三年、五年) 求windows2003 标准版 产品密匙 2015年中国银行的定期存款利率是多少?利率最高上浮20%是什么意思 2015年11月26日以后中国银行一年定期存款利率是多少