> 文档中心 > JS——70行完成五子棋布局

JS——70行完成五子棋布局


        五子是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连珠者获胜。

        笔者相信很多小伙伴都对五子棋情有独钟,想不想拥有属于自己的五子棋呢,今天笔者给大家带来了JavaScript下的五子棋布局(仅有棋盘和下棋换手定义,尚未定义输赢条件)。

代码:

  五子棋棋局   canvas{  display: block;  margin: 50px auto;  box-shadow: -2px -2px 2px #F3F2F2, 5px 5px 5px #6F6767;  }     var chess = document.getElementById("mycanvas");  var context = chess.getContext('2d');  var me = true;  var chessBox = [];//用于存放棋盘中落子的情况  for(var i=0;i<15;i++){   chessBox[i]=[];   for(var j=0;j<15;j++){    chessBox[i][j]=0;//初始值为0   }  }  function drawChessBoard(){   for(var i=0;i<15;i++){    context.strokeStyle="#D6D1D1";    context.moveTo(15+i*30,15);//垂直方向画15根线,相距30px;    context.lineTo(15+i*30,435);    context.stroke();    context.moveTo(15,15+i*30);//水平方向画15根线,相距30px;棋盘为14*14;    context.lineTo(435,15+i*30);    context.stroke();   }  }  drawChessBoard();//绘制棋盘  function oneStep(i,j,k){   context.beginPath();   context.arc(15+i*30,15+j*30,13,0,2*Math.PI);//绘制棋子   var g=context.createRadialGradient(15+i*30,15+j*30,13,15+i*30,15+j*30,0);//设置渐变   if(k){//k=true是黑棋,否则是白棋    g.addColorStop(0,'#0A0A0A');//黑棋    g.addColorStop(1,'#636766');   }else {    g.addColorStop(0,'#D1D1D1');//白棋    g.addColorStop(1,'#F9F9F9');   }   context.fillStyle=g;   context.fill();   context.closePath();  }  chess.onclick=function(e){   var x = e.offsetX;//相对于棋盘左上角的x坐标   var y = e.offsetY;//相对于棋盘左上角的y坐标   var i = Math.floor(x/30);   var j = Math.floor(y/30);   if( chessBox[i][j] == 0 ) {    oneStep(i,j,me);    if(me){     chessBox[i][j]=1;    }else{     chessBox[i][j]=2;    }    me=!me;//下一步白棋   }  } 

小伙伴们快去试一试呀!