| <!DOCTYPE HTML> |
002 | <html> |
003 | <head> |
004 | <meta charset= "UTF-8" > |
005 | <title>Flood It</title> |
006 | <style> |
007 | span{display:inline-block;margin:2px;width:30px;height:30px;cursor:pointer;} |
008 | </style> |
009 | </head> |
010 | <body> |
011 | <div style= "position:absolute;left:2px;top:2px;width:660px;" > |
012 | <canvas id= "canvas" width= "660" height= "660" ></canvas> |
013 | </div> |
014 | <div style= "position:absolute;left:700px;width:300px;" > |
015 | <p><input type=button value= "New Game" onclick=init()><span id= "hint" ></span></p> |
016 | <p> |
017 | <span style= "background:#884cb8;" onclick=drawColor(0)></span> |
018 | <span style= "background:#f84870;" onclick=drawColor(1)></span> |
019 | <span style= "background:#f87c00;" onclick=drawColor(2)></span> |
020 | <span style= "background:#f8dc00;" onclick=drawColor(3)></span> |
021 | <span style= "background:#10d000;" onclick=drawColor(4)></span> |
022 | <span style= "background:#106cf8;" onclick=drawColor(5)></span> |
023 | </p> |
024 | <div> |
025 | <script> |
026 | var canvas = document.getElementById( 'canvas' ); |
027 | var context = canvas.getContext( '2d' ); |
028 | //定义填充的颜色 |
029 | var color=[ '#884cb8' , '#f84870' , '#f87c00' , '#f8dc00' , '#10d000' , '#106cf8' ]; |
030 | //格子区域 |
031 | var board; |
032 | //宽度,高度最难级别22格 |
033 | var level=22; |
034 | //当前颜色索引 0-5 |
035 | var currentColorIndex; |
036 | //一个标志位仅在初始化时开启 |
037 | var flag; |
038 | //显示步数的div |
039 | var hint=document.getElementById( 'hint' ); |
040 | //记录点击步数 |
041 | var step; |
042 | //初始化数组,随即产生颜色index并存储 |
043 | function init(){ |
044 | board= new Array(); |
045 | for (i=0;i<level;i++){ |
046 | var row= new Array(); |
047 | for (j=0;j<level;j++){ |
048 | row[j]=Math.floor(Math.random()*6); |
049 | } |
050 | board[i]=row; |
051 | } |
052 | //当前颜色等于左上角的色块 |
053 | currentColorIndex=board[0][0]; |
054 | //翻转过的格子存储-1值,先另左上角的为-1 |
055 | board[0][0]=-1; |
056 | //一下几行自己看吧,一言难尽 |
057 | flag= false ; |
058 | drawColor(currentColorIndex); |
059 | flag= true ; |
060 | _drawBoard(); |
061 | step=0; |
062 | hint.innerText=step+ '/36' |
063 | } |
064 |
065 | //绘制格子区域 |
066 | function _drawBoard(){ |
067 | context.fillStyle=color[currentColorIndex]; |
068 | context.fillRect(0,0,30*level,30*level); |
069 | for (i=0;i<level;i++){ |
070 | for (j=0;j<level;j++){ |
071 | if (board[i][j]!=-1){ |
072 | context.fillStyle=color[board[i][j]]; |
073 | context.fillRect(j*30,i*30,30,30); |
074 | } |
075 | } |
076 | } |
077 | hint.innerText=step+ '/36' |
078 | } |
079 | //染色 |
080 | function drawColor(color_index){ |
081 | //点击当前颜色值无效。初始化时除外。 |
082 | if (color_index==currentColorIndex && flag) return ; |
083 | for (i=0;i<level;i++){ |
084 | for (j=0;j<level;j++){ |
085 | if (board[i][j]==-1){ |
086 | _findSameColor(i,j,color_index); |
087 | } |
088 | } |
089 | } |
090 | step++; |
091 | currentColorIndex=color_index; |
092 | _drawBoard(); |
093 | } |
094 | //递归寻找同色格子 |
095 | function _findSameColor(cell_x,cell_y,color_index){ |
096 | if (cell_x-1>=0 && board[cell_x-1][cell_y]==color_index) {board[cell_x-1][cell_y]=-1;_findSameColor(cell_x-1,cell_y,color_index);} |
097 | if (cell_x+1<level && board[cell_x+1][cell_y]==color_index) {board[cell_x+1][cell_y]=-1;_findSameColor(cell_x+1,cell_y,color_index);} |
098 | if (cell_y-1>=0 && board[cell_x][cell_y-1]==color_index) {board[cell_x][cell_y-1]=-1;_findSameColor(cell_x,cell_y-1,color_index);} |
099 | if (cell_y+1<level && board[cell_x][cell_y+1]==color_index) {board[cell_x][cell_y+1]=-1;_findSameColor(cell_x,cell_y+1,color_index);} |
100 | } |
101 | </script> |
102 | </body> |
103 | </html> |
HTML页面:
001 | <!DOCTYPE HTML> |
002 | < html > |
003 | < head > |
004 | < meta charset = "UTF-8" > |
005 | < title >Flood It</ title > |
006 | < style > |
007 | span{display:inline-block;margin:2px;width:30px;height:30px;cursor:pointer;} |
008 | </ style > |
009 | </ head > |
010 | < body > |
011 | < div style = "position:absolute;left:2px;top:2px;width:660px;" > |
012 | < canvas id = "canvas" width = "660" height = "660" ></ canvas > |
013 | </ div > |
014 | < div style = "position:absolute;left:700px;width:300px;" > |
015 | < p >< input type = button value = "New Game" onclick = init ()>< span id = "hint" ></ span ></ p > |
016 | < p > |
017 | < span style = "background:#884cb8;" onclick = drawColor (0)></ span > |
018 | < span style = "background:#f84870;" onclick = drawColor (1)></ span > |
019 | < span style = "background:#f87c00;" onclick = drawColor (2)></ span > |
020 | < span style = "background:#f8dc00;" onclick = drawColor (3)></ span > |
021 | < span style = "background:#10d000;" onclick = drawColor (4)></ span > |
022 | < span style = "background:#106cf8;" onclick = drawColor (5)></ span > |
023 | </ p > |
024 | < div > |
025 | < script > |
026 | var canvas = document.getElementById('canvas'); |
027 | var context = canvas.getContext('2d'); |
028 | //定义填充的颜色 |
029 | var color=['#884cb8','#f84870','#f87c00','#f8dc00','#10d000','#106cf8']; |
030 | //格子区域 |
031 | var board; |
032 | //宽度,高度最难级别22格 |
033 | var level=22; |
034 | //当前颜色索引 0-5 |
035 | var currentColorIndex; |
036 | //一个标志位仅在初始化时开启 |
037 | var flag; |
038 | //显示步数的div |
039 | var hint=document.getElementById('hint'); |
040 | //记录点击步数 |
041 | var step; |
042 | //初始化数组,随即产生颜色index并存储 |
043 | function init(){ |
044 | board=new Array(); |
045 | for(i=0;i< level ;i++){ |
046 | var row = new Array(); |
047 | for( j = 0 ;j<level;j++){ |
048 | row[j]=Math.floor(Math.random()*6); |
049 | } |
050 | board[i]=row; |
051 | } |
052 | //当前颜色等于左上角的色块 |
053 | currentColorIndex = board [0][0]; |
054 | //翻转过的格子存储-1值,先另左上角的为-1 |
055 | board[0][0]=-1; |
056 | //一下几行自己看吧,一言难尽 |
057 | flag = false ; |
058 | drawColor(currentColorIndex); |
059 | flag = true ; |
060 | _drawBoard(); |
061 | step = 0 ; |
062 | hint.innerText = step +'/36' |
063 | } |
064 |
065 | //绘制格子区域 |
066 | function _drawBoard(){ |
067 | context.fillStyle = color [currentColorIndex]; |
068 | context.fillRect(0,0,30*level,30*level); |
069 | for( i = 0 ;i<level;i++){ |
070 | for( j = 0 ;j<level;j++){ |
071 | if(board[i][j]!=-1){ |
072 | context.fillStyle = color [board[i][j]]; |
073 | context.fillRect(j*30,i*30,30,30); |
074 | } |
075 | } |
076 | } |
077 | hint.innerText = step +'/36' |
078 | } |
079 | //染色 |
080 | function drawColor(color_index){ |
081 | //点击当前颜色值无效。初始化时除外。 |
082 | if(color_index==currentColorIndex && flag) return; |
083 | for( i = 0 ;i<level;i++){ |
084 | for( j = 0 ;j<level;j++){ |
085 | if(board[i][j]==-1){ |
086 | _findSameColor(i,j,color_index); |
087 | } |
088 | } |
089 | } |
090 | step++; |
091 | currentColorIndex = color_index ; |
092 | _drawBoard(); |
093 | } |
094 | //递归寻找同色格子 |
095 | function _findSameColor(cell_x,cell_y,color_index){ |
096 | if(cell_x-1>=0 && board[cell_x-1][cell_y]==color_index) {board[cell_x-1][cell_y]=-1;_findSameColor(cell_x-1,cell_y,color_index);} |
097 | if(cell_x+1< level && board[cell_x+1][cell_y]==color_index) {board[cell_x+1][cell_y]=-1;_findSameColor(cell_x+1,cell_y,color_index);} |
098 | if(cell_y-1>=0 && board[cell_x][cell_y-1]==color_index) {board[cell_x][cell_y-1]=-1;_findSameColor(cell_x,cell_y-1,color_index);} |
099 | if(cell_y+1< level && board[cell_x][cell_y+1]==color_index) {board[cell_x][cell_y+1]=-1;_findSameColor(cell_x,cell_y+1,color_index);} |
100 | } |
101 | </script> |
102 | </ body > |
103 | </ html > |