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

基于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創建一個二維數組 用來定義繪制棋盤線*/  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;//判斷出輸贏結束后續判斷  }    // 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;//判斷出輸贏結束后續判斷  }    //左下 右上  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;//判斷出輸贏結束后續判斷  }  //左上右下  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;//判斷出輸贏結束后續判斷  }  }      /*功能擴充:  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號
四虎精品视频在线永久免费观看 | 亚洲精品无码永久中文字幕| 老司机精品视频免费| 精品伊人久久香线蕉| 无码日韩精品一区二区免费| 国产精品亚洲片在线va| 精品偷自拍另类在线观看| 久久er这里只有精品| 国产精品va无码一区二区| 国产一精品一AV一免费| 人人鲁人人莫人人爱精品| 久久久精品人妻无码专区不卡| 亚洲国产精品日韩| 伊人精品久久久久7777| 蜜桃导航一精品导航站| 日韩a级一片在线观看| 精品日韩二区三区精品视频| 亚洲国产美女精品久久久| 国产亚洲福利精品一区| 中文字幕免费视频精品一| 久久狠狠一本精品综合网| 久久99精品国产麻豆不卡| 国产精品亚洲美女久久久| 国产情侣大量精品视频| 国产精品亚洲二区在线观看 | 久久精品国产亚洲AV果冻传媒| 亚洲精品~无码抽插| 亚洲精品无码久久久久去q| 国产亚洲一区二区精品| 日本一区精品久久久久影院| 久久综合精品视频| 99ri精品国产亚洲| 亚洲国产精品线观看不卡| 精品国产精品国产偷麻豆| 91精品国产麻豆福利在线| 日日夜夜精品视频| 亚洲精品无码久久久久APP| 尤物精品视频一区二区三区| 精品久久久久国产| 国产成人无码精品一区不卡| 四虎永久在线精品视频免费观看|