亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網
    最全最豐富的資訊網站

    基于js+canvas實現五子棋小游戲

    基于js+canvas實現五子棋小游戲

    本文實例為大家分享了js+canvas實現五子棋小游戲的具體代碼,供大家參考,具體內容如下

    效果展示:

    基于js+canvas實現五子棋小游戲

    源碼展示:

    <!DOCTYPE html> <html lang="en"> <head>  <meta charset="UTF-8">  <title>五子棋</title>  <style>  * {  margin: 0;  padding: 0;  }    body {  margin-top: 20px;  margin-left: 20px;  }    canvas {  background-image: url("img/bak.jpg");  border: 1px solid #000;  }    </style> </head> <body> <canvas width="600" height="600" onclick="play(event)"></canvas> <script>  /*準備工作: 1獲取畫布,獲取畫筆對象 */  var mcanvas = document.querySelector("canvas");  var ctx = mcanvas.getContext("2d");    /*準備工作:2創(chuàng)建一個二維數組 用來定義繪制棋盤線*/  var count = 15;//用來定義棋盤的行數和列數  var map = new Array(count);  for (var i = 0; i < map.length; i++) {  map[i] = new Array(count);  for (var j = 0; j < map[i].length; j++) {  map[i][j] = 0;  }  }  /*準備工作:3初始化棋子*/  var black = new Image();  var white = new Image();  black.src = "img/black.png";  white.src = "img/white.png";      //開始繪制 1繪制棋盤線  ctx.strokeStyle = "#fff";  var rectWH = 40; //設置繪制矩形的大小  for (var i = 0; i < map.length; i++) {  for (var j = 0; j < map[i].length; j++) {  ctx.strokeRect(j * rectWH, i * rectWH, rectWH, rectWH);  }  }    // 用來進行黑白子的切換  var isBlack = true;    //開始繪制 2下子  function play(e) {  //獲取點擊canvas的位置值默認,canvas的左上角為(0,0) 點  var leftOffset = 20;//body 的margin  var x = e.clientX - leftOffset;  var y = e.clientY - leftOffset;  // console.log(x+" "+y);  // 設置點擊點后棋子下在哪里,獲取點擊的位置進行判斷如果超過格子的一半則繪制到下一個點如果小于 則繪制在上一個點上  var xv = (x - rectWH / 2) / rectWH;  var yv = (y - rectWH / 2) / rectWH;    var col = parseInt(xv) + 1;  var row = parseInt(yv) + 1;  console.log(xv + " " + yv + " , " + col + " " + row);    //嚴格點需要驗證 ,驗證所輸入的點是否在數組中已經存在 ,如果存在 則返回  if (map[row][col] != 0) {  alert("咋的,還想往我身上下?。∠拱。]看見已經有棋子了?。?!");  return;  }    // 切換繪制黑白子  if (isBlack) {  ctx.drawImage(black, col * 40 - 20, row * 40 - 20);  isBlack = false;  map[row][col] = 1;  Yes(1, row, col);  } else {  ctx.drawImage(white, col * 40 - 20, row * 40 - 20);  isBlack = true;  map[row][col] = 2;  Yes(2, row, col);  }  }    //算法驗證,查看誰贏 tag :1 :黑子 2 :白子  function Yes(t, row, col) {  console.log(1);  var orgrow = row;  var orgcol = col;  var total = 1;  // 判斷依據,以當前下的棋子為圓心,水平方向左右尋找和自己想通的值 ,最后判斷如果大于5個則表示勝利  // 1水平方向判斷  while (col - 1 > 0 && map[row][col - 1] == t) { //判斷下一個值 注意一定是:col-1  total++;  col--;  }  row = orgrow;  col = orgcol;  while (col + 1 < 15 && map[row][col + 1] == t) {  col++;  total++;  }  if (total >= 5) {  if (t == 1){  alert("黑子贏");  } else{  alert("白子贏");  }  return;//判斷出輸贏結束后續(xù)判斷  }    // 2垂直方向判斷  row = orgrow;  col = orgcol;  total = 1;  while (row - 1 > 0 && map[row - 1][col] == t) {  row--;  total++;  }  row = orgrow;  col = orgcol;  while (row + 1 < 15 && map[row + 1][col] == t) {  row++;  total++;  }  if (total >= 5) {  if (t == 1){  alert("黑子贏");  } else{  alert("白子贏");  }  return;//判斷出輸贏結束后續(xù)判斷  }    //左下 右上  row = orgrow;  col = orgcol;  total = 1;  while (row + 1 < 15 && col - 1 > 0 && map[row + 1][col - 1] == t) {  row++;  col--;  total++;  }  row = orgrow;  col = orgcol;  while (row - 1 > 0 && col + 1 < 15 && map[row - 1][col + 1] == t) {  row--;  col++;  total++;  }  if (total >= 5) {  if (t == 1){  alert("黑子贏");  } else{  alert("白子贏");  }  return;//判斷出輸贏結束后續(xù)判斷  }  //左上右下  row = orgrow;  col = orgcol;  total = 1;  while (row - 1 > 0 && col - 1 > 0 && map[row - 1][col - 1] == t) {  row--;  col--;  total++;  }  row = orgrow;  col = orgcol;  while (row + 1 < 15 && col + 1 < 15 && map[row + 1][col + 1] == t) {  row++;  col++;  total++;  }  if (total >= 5) {  if (t == 1){  alert("黑子贏");  } else{  alert("白子贏");  }  return;//判斷出輸贏結束后續(xù)判斷  }  }      /*功能擴充:  1當勝利后 彈框:a是否在來一局 b 精彩回復  a 如果點擊在來一句 清空數據重新開始  b 精彩回放將棋盤黑白子按照下棋的順序進行棋子編號2悔棋功能  3對算法的擴充  a如果是雙三 則直接彈出勝利  b若是桶四 則直接彈出勝利  */ </script> </body> </html>

    圖片資源:

    基于js+canvas實現五子棋小游戲

    背景圖片:

    基于js+canvas實現五子棋小游戲基于js+canvas實現五子棋小游戲

    相關學習推薦:javascript視頻教程

    贊(0)
    分享到: 更多 (0)
    網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號