日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

扫雷游戏代码html,分享一个用h5制作的网页版扫雷游戏实例代码

發(fā)布時間:2023/12/10 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扫雷游戏代码html,分享一个用h5制作的网页版扫雷游戏实例代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

閑的沒事 寫個掃雷, 算法 不太好·····湊合,還真的不錯,可以看一下

掃雷

function Set(r,c,hard){

var data = new Array();

for(var i=0;i

for (var i = 0; i < r*c; i )

{

var ran=Math.floor(Math.random()*100);

data[Math.floor(i / c)][i % c] =ran

}

return data;

}

function GetNewData(data,r,c){

var newdata = new Array();

for(var i=0;i

for (var i = 0; i < r * c; i )

{

if (data[Math.floor(i / c)][i % c] == 1)

{

newdata[Math.floor(i / c)][i % c] = 9;

}

else

{

var d = 0;

for (var j = 0; j < 9; j )

{

if (Math.floor(i / c) (Math.floor(j / 3) - 1)>=0 && i % c (j % 3 - 1) >= 0 &&

Math.floor(i / c) (Math.floor(j / 3) - 1) < r && i % c (j % 3 - 1) < c &&

data[Math.floor(i / c) Math.floor(j / 3 - 1)][i % c (j % 3 - 1)] == 1)

{

d ;

}

}

newdata[Math.floor(i / c)][i % c] = d;

}

}

return newdata;

}

function GetRegion(rr,cc,data,list){

if (data[rr][cc]!=0)

{

return;

}

else

{

for (var j = 0; j < 9; j )

{

if (rr (Math.floor(j / 3) - 1)>=0 && cc (j % 3 - 1) >= 0 &&

rr (Math.floor(j / 3) - 1) < r && cc (j % 3 - 1) < c &&

data[rr Math.floor(j / 3 - 1)][cc (j % 3 - 1)] == 0)

{

var pr=rr Math.floor(j / 3 - 1);

var pc=cc (j % 3 - 1);

console.log(pr,pc);

if(contains(list,{r:pr,c:pc}))continue;

list.push({r:pr,c:pc});

GetRegion(pr,pc,data,list);

}

}

return;

}

}

掃雷游戲

難度:

初9*9

中16*16

高30*16

開始

停止

重置

顯示所有

var r=9;//99 1616 3016

var c=9;

var difficulty=15

var tempdata;

var minedata;

var signdata = new Array();

var checkSigndata=new Array

document.write("
");

var Difficulty=document.getElementById("Difficulty");

Difficulty.options[1].selected = true;

var canvas=document.getElementById("myCanvas");

canvas.addEventListener("mousedown", doMouseDown, false);

canvas.οncοntextmenu=function(){return false;}

load(1);

redraw();

//test();

//Drawall();

var t;

var tick=0;

function timedCount(){

document.getElementById('time').value=tick

tick=tick 1

t=setTimeout("timedCount()",1000)

}

function stop(){

if(t!=null)clearTimeout(t);

tick=0;

}

function loadsigndata(){

for(var i=0;i

for(var i=0;i

for (var i = 0; i < r*c; i )

{

switch(minedata[Math.floor(i / c)][i % c])

{

case 9:checkSigndata[Math.floor(i / c)][i % c]=2;

break;

case 0:checkSigndata[Math.floor(i / c)][i % c]=3;

break;

default:checkSigndata[Math.floor(i / c)][i % c]=1;

break;

}

}

}

function test(){

for (var i = 0; i < r*c; i )

{

document.write(minedata[Math.floor(i / c)][i % c] "&nbsp");

if(i%c==c-1)document.write("
");

}

}

function load(v){

switch(parseInt(v))

{

case 1:

r=9;

c=9;

break;

case 2:

r=16;

c=16;

break;

case 3:

r=30;

c=16;

break;

}

reload();

//Drawall();

}

function reload(){

redraw();

tempdata=Set(r,c,difficulty);

minedata=GetNewData(tempdata,r,c);

loadsigndata();

}

function redraw(){

canvas.setAttribute('width',c*30);

canvas.setAttribute('height',r*30);

var ctx=canvas.getContext("2d");

for(var i=0;i

{

ctx.moveTo(0,i*30);

ctx.lineTo(c*30,i*30);

ctx.stroke();

}

for(var i=0;i

{

ctx.moveTo(i*30,0);

ctx.lineTo(i*30,r*30);

ctx.stroke();

}

}

function contains(arr, obj) {

var i = arr.length;

while (i--) {

if (arr[i].r==obj.r&&arr[i].c==obj.c) {

return true;

}

}

return false;

}

var plist=new Array();

function doMouseDown(event){

var btnNum = event.button;

var x = event.pageX;

var y = event.pageY;

var loc = getPointOnCanvas(canvas, x, y);

var xx=Math.floor(loc.x/30);

var yy=Math.floor(loc.y/30);

if(signdata[yy]!=null&&signdata[yy][xx]!=null&&(signdata[yy][xx]==3||signdata[yy][xx]==1))return;

if (btnNum==0)

{

drawCell(xx,yy);

plist.splice(0,plist.length);

GetRegion(yy,xx,minedata,plist);

for(var l=0;l

}

else if(btnNum==2)

{

drawCellr(xx,yy);

}

if(check())alert("成功:" tick);

}

function check(){

for (var i = 0; i < r*c; i )

{

if(checkSigndata[Math.floor(i / c)][i % c]!=signdata[Math.floor(i / c)][i % c])

{

return false;

}

}

return true;

}

function drawCell(xx,yy){

var ctx = canvas.getContext("2d");

ctx.textAlign = "start";

ctx.fillStyle = "red";

ctx.font = "30px Arial";

if(signdata[yy][xx]!=null && signdata[yy][xx]== 2)

{

ctx.fillStyle = "lightgray";

ctx.fillRect(xx*30,yy*30,29,29);

}

ctx.fillStyle = "red";

if(minedata[yy][xx]==9){

//ctx.fillText("×",xx*30,(yy 1)*30);

alert("失敗");

Drawall();

//signdata[yy][xx]=2;

}

else if(minedata[yy][xx]==0){

//ctx.fillText("0",xx*30,(yy 1)*30);

ctx.fillStyle = "green";

ctx.fillRect(xx*30,yy*30,29,29);

signdata[yy][xx]=3;

}

else{

ctx.fillText(minedata[yy][xx].toString(),xx*30,(yy 1)*30);

signdata[yy][xx]=1;

}

}

function drawCellr(xx,yy){

var ctx = canvas.getContext("2d");

ctx.textAlign = "start";

ctx.fillStyle = "red";

ctx.font = "30px Arial";

if(signdata[yy][xx]==0||signdata[yy][xx]==null)

{

ctx.fillText("√",xx*30,(yy 1)*30);

signdata[yy][xx]=2;

}

else

{

ctx.fillStyle = "lightgray";

ctx.fillRect(xx*30,yy*30,29,29);

//ctx.fillText("√",xx*30,(yy 1)*30);

signdata[yy][xx]=0;

}

ctx.stroke();

}

function getPointOnCanvas(canvas, x, y) {

var bbox = canvas.getBoundingClientRect();

return { x: x - bbox.left * (canvas.width / bbox.width),

y: y - bbox.top * (canvas.height / bbox.height)

};

}

function Drawall(){

redraw();

var ctx = canvas.getContext("2d");

ctx.textAlign = "start";

ctx.fillStyle = "red";

ctx.font = "30px Arial";

for(var i=0;i

{

var x=i%c*30;

var y=(Math.floor(i/c) 1)*30;

if(minedata[Math.floor(i/c)][i%c]==9){ctx.fillText("×",x,y);}

else if(minedata[Math.floor(i/c)][i%c]==0){ctx.fillText("0",x,y);}

else{ctx.fillText(minedata[Math.floor(i/c)][i%c].toString(),x,y);}

}

}

總結

以上是生活随笔為你收集整理的扫雷游戏代码html,分享一个用h5制作的网页版扫雷游戏实例代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。