Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>
- minesweeper
- </title>
- <script type="text/javascript">
- var xsize;
- var ysize;
- var bombs;
- var gamestarted;
- var gameover;
- var gamewon;
- var gamemustend;
- var state;
- var traps;
- var browserie=(navigator.appName.indexOf("Internet Explorer")!=-1);
- var firstpressed;
- var starttime;
- var bleft;
- var timer=null;
- var buttons;
- function leftclicked(id)
- {
- if(firstpressed)
- {
- open(id);
- }
- else
- {
- firstpressed=true;
- if(traps[id]==-1)
- {
- do
- {
- reset();
- }while(traps[id]==-1);
- }
- open(id);
- }
- updatebuttons(true);
- }
- function rightclicked(id)
- {
- firstpressed=true;
- if(state[id]==0)
- {
- state[id]=2;
- bleft--;
- }
- else if(state[id]==2)
- {
- state[id]=0;
- bleft++;
- }
- updatebuttons(false);
- }
- function middleclicked(id)
- {
- if((state[id]==1)&&(traps[id]>0)&&(countflagged(id)==traps[id]))opensurrounding(id);
- updatebuttons(true);
- }
- function buttonclicked(id,event)
- {
- if(gameover)return;
- if((!gamestarted)&&(event.button!=(browserie?4:1)))
- {
- gamestarted=true;
- starttime=new Date().getTime();
- document.getElementById("gamebtn").style.backgroundColor="#DDDDDD";
- timer=setTimeout("updatetimer(true);",100);
- }
- if(browserie)
- {
- if(event.button==1)leftclicked(id);
- else if(event.button==2)rightclicked(id);
- else if(event.button==4)middleclicked(id);
- }
- else
- {
- if(event.button==0)leftclicked(id);
- else if(event.button==2)rightclicked(id);
- else if(event.button==1)middleclicked(id);
- }
- }
- function updatetimer(retrigger)
- {
- document.getElementById("timer").innerHTML="Time: "+((new Date().getTime()-starttime)/1000).toFixed(3);
- if(retrigger)timer=setTimeout("updatetimer(true);",100);
- }
- function open(id)
- {
- if(state[id]!=0)return;
- state[id]=1;
- if(traps[id]==0)opensurrounding(id);
- if(traps[id]==-1)gamemustend=true;
- }
- function countflagged(id)
- {
- var count=0;
- var x=id%xsize,y=Math.floor(id/xsize);
- if(x>0)if(state[id-1]==2)count++;
- if(x<(xsize-1))if(state[id+1]==2)count++;
- if(y>0)if(state[id-xsize]==2)count++;
- if(y<(ysize-1))if(state[id+xsize]==2)count++;
- if((x>0)&&(y>0))if(state[id-xsize-1]==2)count++;
- if((x<(xsize-1))&&(y>0))if(state[id-xsize+1]==2)count++;
- if((x>0)&&(y<(ysize-1)))if(state[id+xsize-1]==2)count++;
- if((x<(xsize-1))&&(y<(ysize-1)))if(state[id+xsize+1]==2)count++;
- return count;
- }
- function opensurrounding(id)
- {
- var x=id%xsize,y=Math.floor(id/xsize);
- if(x>0)open(id-1);
- if(x<(xsize-1))open(id+1);
- if(y>0)open(id-xsize);
- if(y<(ysize-1))open(id+xsize);
- if((x>0)&&(y>0))open(id-xsize-1);
- if((x<(xsize-1))&&(y>0))open(id-xsize+1);
- if((x>0)&&(y<(ysize-1)))open(id+xsize-1);
- if((x<(xsize-1))&&(y<(ysize-1)))open(id+xsize+1);
- }
- function reset()
- {
- state=new Array(xsize*ysize);
- for(var i=0;i<state.length;i++)state[i]=0;
- traps=new Array(xsize*ysize);
- var bombsleft=bombs;
- for(var i=0;i<traps.length;i++)traps[i]=0;
- while(bombsleft>0)
- {
- var pos=Math.floor(Math.random()*traps.length);
- if(traps[pos]!=-1)
- {
- traps[pos]=-1;
- bombsleft--;
- }
- }
- for(var i=0;i<traps.length;i++)traps[i]=((traps[i]==-1)?-1:counttraps(i));
- gamestarted=false;
- gameover=false;
- gamewon=false;
- gamemustend=false;
- firstpressed=false;
- bleft=bombs;
- if(timer!=null)clearTimeout(timer);
- document.getElementById("timer").innerHTML="Time: 0.000";
- document.getElementById("gamebtn").style.backgroundColor="#888888";
- updatebuttons(false);
- }
- function updatebuttons(check)
- {
- for(var i=0;i<traps.length;i++)
- {
- var btn=buttons[i];
- btn.value="";
- btn.style.background="#FFFFFF";
- if(state[i]==0)btn.style.background="#999999";
- if(gameover&&(traps[i]==-1))btn.style.background="#333333";
- if(state[i]==2)btn.style.background="#00FF00";
- if(gameover&&(state[i]==2)&&(traps[i]!=-1))btn.style.background="#FF0000";
- if((state[i]==1)&&(traps[i]>0))btn.value=traps[i];
- if((state[i]==1)&&(traps[i]==-1))btn.style.background="#FF00FF";
- }
- gamewon=checkwin();
- if((check&&gamewon)||gamemustend)
- {
- endgame();
- }
- document.getElementById("bleft").innerHTML="Bombs: "+(gamewon?0:bleft);
- }
- function endgame()
- {
- gamemustend=false;
- gameover=true;
- if(gamewon)
- {
- for(var i=0;i<traps.length;i++)
- {
- if(traps[i]==-1)state[i]=2;
- }
- document.getElementById("gamebtn").style.backgroundColor="#00FF00";
- }
- else
- {
- document.getElementById("gamebtn").style.backgroundColor="#FF0000";
- }
- updatebuttons(false);
- clearTimeout(timer);
- updatetimer(false);
- }
- function checkwin()
- {
- for(var i=0;i<traps.length;i++)
- {
- if((traps[i]!=-1)&&(state[i]!=1))return false;
- }
- return true;
- }
- function counttraps(id)
- {
- var count=0;
- var x=id%xsize,y=Math.floor(id/xsize);
- if(x>0)if(traps[id-1]==-1)count++;
- if(x<(xsize-1))if(traps[id+1]==-1)count++;
- if(y>0)if(traps[id-xsize]==-1)count++;
- if(y<(ysize-1))if(traps[id+xsize]==-1)count++;
- if((x>0)&&(y>0))if(traps[id-xsize-1]==-1)count++;
- if((x<(xsize-1))&&(y>0))if(traps[id-xsize+1]==-1)count++;
- if((x>0)&&(y<(ysize-1)))if(traps[id+xsize-1]==-1)count++;
- if((x<(xsize-1))&&(y<(ysize-1)))if(traps[id+xsize+1]==-1)count++;
- return count;
- }
- function createboard(x,y,b)
- {
- xsize=x;
- ysize=y;
- bombs=b;
- var boardhtml="<table cellspacing=\"0px\" style=\"border-collapse:collapse;line-height:0px;border:2px solid #000000\">";
- for(var i=0;i<ysize;i++)
- {
- boardhtml+="<tr>";
- for(var j=0;j<xsize;j++)
- {
- boardhtml+="<td style=\"padding:0px;\"><input type=\"button\" style=\"color:black;border:1px solid;width:20px;height:20px;font-weight:bold;\" onmousedown=\"buttonclicked("+(xsize*i+j)+",event)\" id=\""+(xsize*i+j)+"\" value=\" \"/><"+"/td>";
- }
- boardhtml+="<"+"/tr>";
- }
- boardhtml+="</"+"table>";
- document.getElementById("board").innerHTML=boardhtml;
- document.getElementById("controls").style.width=(20*x+4)+"px";
- buttons=new Array();
- for(var i=0;i<(x*y);i++)
- {
- buttons[buttons.length]=document.getElementById(i);
- }
- reset();
- }
- </script>
- </head>
- <body oncontextmenu="return false;">
- <div id="board">
- </div>
- <table id="controls" style="background-color:#CCCCCC;border:1px solid black;width:10px;">
- <tr>
- <td style="width:40%;border:1px solid black;text-align:left">
- <span id="bleft">0</span>
- </td>
- <td style="width:20%;text-align:center;">
- <input id="gamebtn" style="vertical-align:middle;width:100%;height:20px" onmousedown="reset()" type="button" value=" " />
- </td>
- <td style="text-align:right;width:40%;border:1px solid black;">
- <span id="timer">0</span>
- </td>
- </tr>
- </table>
- <table style="background-color:#CCCCCC;border:1px solid black;width:10px;border-top:none">
- <tr>
- <td style="text-align:left">
- <input onmousedown="createboard(9,9,10)" type="button" value="Easy" />
- </td>
- <td style="text-align:center;">
- <input onmousedown="createboard(16,16,40)" type="button" value="Medium" />
- </td>
- <td style="text-align:right;">
- <input onmousedown="createboard(30,16,99)" type="button" value="Hard" />
- </td>
- </tr>
- </table>
- <script type="text/javascript">
- createboard(16,16,40);
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement