1. 程式人生 > >H5+C3+JS實現雙人對戰五子棋遊戲(UI篇)

H5+C3+JS實現雙人對戰五子棋遊戲(UI篇)

本篇文章實現的是雙人對戰模式,主要是實現除人機AI演算法和判斷輸贏之外的其他功能,下一篇將會發布AI

框架搭建

前端精品教程:百度網盤下載

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <!Doctype html> < html >      < head >       
<!-- 百度爬蟲優化 -->      < meta http-equiv = "author" content = "成兮,緣分五月" />      < meta
http-equiv = "Keywords" cotent = "五子棋,人機大戰,單人遊戲,雙人遊戲,小遊戲" />      < meta Charset = "utf-8" />        < title >愛淘寶-五子棋</ title >        < style >        #chess {          display: block;          margin: 50px auto;          box-shadow: -2px -2px 2px #efefef , 5px 5px 5px #b9b9b9;        }        #chess:hover{          cursor: pointer;        }      </ style >        < script >        window.onload = function() {          } ;      </ script >      </ head >      < body >      <!-- 棋盤 -->      < canvas id = "chess" width = "450px" height = "450px" ></ canvas >      </ body >   </ html >

定義一些需要用到的全域性變數

 

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script>    //獲取棋盤canvas    var chess = document.getElementById( "chess" );    //獲取2d畫布    var context = chess.getContext( '2d' );    //指定當前是否黑色下,只在UI中使用    var me = true ;    //指定當前位置是否下了其,1代表黑,2代表白,0代表空    var curIndex = [];    for ( var i =0; i <15; i++) {      curIndex[i] = [];      for ( var j =0; j <15; j++)        curIndex[i][j] = 0;    } </script>

使用canvas繪製棋盤

前端精品教程:百度網盤下載

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <script>    function drawtable() {      //我們設定棋盤總共15根橫線15根匯流排,左右上下都有15px的邊距,其中每個棋子相距30px,因此繪製棋盤從15px開始        for ( var i =0; i <15; i++)        for ( var j =0; j <15; j++)          {            //繪製橫線            context.moveTo(15, 15 +j *30);            context.lineTo(435, 15 +j *30);            //繪製豎線            context.moveTo(15 +j *30, 15);            context.lineTo(15 +j *30, 435);              //使用灰色描邊            context.strokeStyle = "#bfbfbf" ;            context.stroke();          }    };    drawtable(); </script>

棋盤的onclick事件:在該位置上繪製一個棋子,每次點選黑白相間

 

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <script>    chess.onclick = function (event) {      //獲取要下的棋子的位置      var x = Math.floor(event.offsetX /30);      var y = Math.floor(event.offsetY /30);      //判斷該點是否已被下了      if (curIndex[x][y] != 0)        return ;      //開始繪製      context.beginPath();      //繪製指定圓      context.arc(15 +x *30, 15 +y *30, 15, 0, 2 *Math.PI);      //進行填充      if (me) {        context.fillStyle = "#636766" ;        curIndex[x][y] = 1;        me = false ;      }      else {        context.fillStyle = "#b9b9b9" ;        curIndex[x][y] = 2;        me = true ;      }      context.fill();      //結束繪製      context.closePath();    }; </script>