用遞歸啊。你肯定已經(jīng)做了一個方法用來檢測當(dāng)前點(diǎn)周邊8個點(diǎn)是否無雷了吧?對于無雷的點(diǎn)逐個再次調(diào)用該方法。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供宣城網(wǎng)站建設(shè)、宣城做網(wǎng)站、宣城網(wǎng)站設(shè)計(jì)、宣城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、宣城企業(yè)網(wǎng)站模板建站服務(wù),10余年宣城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
以下是偽碼示例. isBad是用來檢測指定的點(diǎn)是否是雷的方法
function checkRimPoint(x, y) {
var points = [[x-1,y-1],[x,y-1],[x+1,y-1],[x-1,y],[x+1,y],[x-1,y+1],[x,y+1],[x+1,y+1];
for(var i = 0; i points.length; i++) {
if (! isBad(points[i][0], points[i][1])) {
showPoint(points[i][0], points[i][1]));//這個不是雷,調(diào)用方法顯示這個點(diǎn)
checkRimPoint(points[i][0], points[i][1])); //對該點(diǎn)遞歸處理
}
}
}
以上只是個思路,沒有實(shí)際價值哦,我記得展開后的效果一種可能是到邊界了,另一種可能就是顯示周圍有幾個雷的那種數(shù)字框。不過核心就是遞歸處理。
如果有幫助的話望采納
1)jquery.tableGen.js,這段js的作用是產(chǎn)生一個表格,表格中顯示數(shù)字和雷區(qū),調(diào)用的方法很簡單,如下:
var options ={
rows:5,
cols:5,
percent:0.1
};
$("table").tableGen(options); ?
思路是:根據(jù)table的單元格的數(shù)目隨機(jī)產(chǎn)生percent的雷,并填充td。然后遍歷所有的td,查找周圍雷的個數(shù)來填充單元格的數(shù)字
[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(inum)???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;jsetting.rows;j++){
str+="tr";
for(var?i=0;isetting.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;iarr.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;ineig.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;ineigUp.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;ineigDw.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);
2)jquery.fill.js。這段代碼的作用是定義點(diǎn)擊事件,每次點(diǎn)擊根據(jù)點(diǎn)擊的內(nèi)容來顯示周圍的區(qū)域或者提示成功失敗
[javascript]?view plain?copy
(function($){
neig?=[-1,1];
neigDw?=[cols];
neigUp?=?[-cols];
var?recover?=function(td,table){
if(!td)???????return;
if(!td.attr)??td?=?$(td);
if(!td.hasClass("mark")){
return;
}
if(td.text()?==?""){
td.removeClass("mark").find("span").css("opacity",1);
}
else?if(td.text()?!="*"){
td.removeClass("mark").find("span").css("opacity",1);
return;
}
else?if(td.text()?==?"*"){
return;
}
var?seq?=?td.index("td",table);
tds?=?table.filter("td");
/*----------------------------*/
for(var?i=0;ineig.length;i++){
var?p?=?neig[i]+seq;
if(tds[p]Math.floor(p/cols)?==?Math.floor(seq/cols)??$(tds[p]).text()?!=?"*")?{
recover($(tds[p]),table);
}
}
for(var?i=0;ineigUp.length;i++){
var?p?=?neigUp[i]+seq;
if(tds[p]Math.floor(p/cols)+1?==?Math.floor(seq/cols?)?$(tds[p]).text()?!=?"*")?{
recover($(tds[p]),table);
}
}
for(var?i=0;ineigDw.length;i++){
var?p?=?neigDw[i]+seq;
if(tds[p]Math.floor(p/cols)-1?==?Math.floor(seq/cols)??$(tds[p]).text()?!=?"*")?{
recover($(tds[p]),table);
}
}
}
$.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);
[html]?view plain?copy
!--?!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Strict//EN"?""
head
script?type="text/javascript"?src="jquery.js"/script
script?type="text/javascript"?src="jquery.table.js"/script
script?type="text/javascript"?src="jquery.fill.js"/script
titleMine/title
style?type="text/css"
table{
table-layout:?fixed;
}
.org?{
border:1px?solid?black;
background-color:white;
overflow:?hidden;
width:?10px;
height:10px;
}
.mine{
}
.mark{
background-color:?orange;
}
.flag{
background:?url(flag.png);
background-color:?blue;
}
/style
/head
body
h3Mine?Game/h3
table?colspan='4'
/table
script?type="text/javascript"?
var?options?={
rows:5,
cols:5,
percent:0.1
};
$("table").tableGen(options);
$("table").fill();
/script
/body
/html?--
比較好的web前端開發(fā)培訓(xùn)機(jī)構(gòu)推薦千鋒教育,千鋒教育以成為一個有情懷、有良心、有品質(zhì)的一流教育機(jī)構(gòu)為企業(yè)愿景,以幫助更多迷茫的學(xué)生實(shí)現(xiàn)他們的夢想為企業(yè)使命。
隨著時代的發(fā)展,網(wǎng)絡(luò)已經(jīng)成為人們的生活、工作的必需品。隨著新興行業(yè)的興起和發(fā)展,越來越多的人青睞web前端開發(fā)的學(xué)習(xí),web前端開發(fā)前景廣闊,薪資高,就業(yè)率高,入門也是很簡單的,吸引了越來越多的人入門前端行業(yè)。web前端作為近幾年新興的軟件開發(fā)語言,更是得到了多人一致的好評和青睞。既然web前端這么受歡迎,學(xué)習(xí)這門課程當(dāng)然前景更可觀。目前市面上的web前端開發(fā)學(xué)習(xí),一般在4-6個月左右。學(xué)習(xí)方式一般有兩種,一種是面授,一種是線上學(xué)習(xí)。歡迎咨詢千鋒教育。
想要了解更多關(guān)于web前端開發(fā)的相關(guān)信息,推薦咨詢千鋒教育。千鋒企合作部整合大量企業(yè)客戶資源,緊抓當(dāng)下企業(yè)需求,將技術(shù)和項(xiàng)目完美結(jié)合千鋒課程體系,力求培養(yǎng)更多優(yōu)質(zhì)人才服務(wù)企業(yè),不斷提升學(xué)員競爭力,鏈接企業(yè)用人標(biāo)準(zhǔn)的培訓(xùn)課程及實(shí)戰(zhàn)項(xiàng)目,讓企業(yè)招聘用人的技術(shù)要求與千鋒學(xué)員的技術(shù)充分對接。近年來不斷引進(jìn)阿里釘釘小程序技術(shù)、紅帽認(rèn)證、騰訊云、亞馬遜等,通過與企業(yè)的深度融合實(shí)現(xiàn)千鋒教研和就業(yè)服務(wù)的迭代升級,專業(yè)性值得信賴。
當(dāng)前標(biāo)題:javascript雷區(qū),JavaScript ??
網(wǎng)頁路徑:http://aaarwkj.com/article14/dsisjde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、服務(wù)器托管、企業(yè)建站、移動網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)