温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JS+canvas如何实现的五子棋游戏

发布时间:2021-05-12 13:53:55 来源:亿速云 阅读:249 作者:小新 栏目:web开发

这篇文章给大家分享的是有关JS+canvas如何实现的五子棋游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

运行效果图:

JS+canvas如何实现的五子棋游戏

html代码如下:

<!DOCTYPE html> <html>   <head>     <meta charset="utf-8" />     <title>五子棋</title>     <link rel="stylesheet" type="text/css" href="css/style.css" rel="external nofollow" />   </head>   <body>     <canvas id="chess" width="450px" height="450px"></canvas>     <div id='restart' class="restart">       <span>重新开始</span>     </div>     <script src="js/script.js" type="text/javascript" charset="utf-8"></script>   </body> </html>

style.css代码如下:

canvas{   display: block;   margin: 50px auto;   box-shadow: -2px -2px 2px #efefef, 5px 5px 5px #b9b9b9; } .restart{   text-align: center; } .restart>span{   display: inline-block;   padding: 10px 20px;   color: #fff;   background-color: #45c01a;   border-radius: 5px; }

script.js代码如下:

var over = false; var me = true; //我 var chressBord = [];//棋盘 for(var i = 0; i < 15; i++){   chressBord[i] = [];   for(var j = 0; j < 15; j++){     chressBord[i][j] = 0;   } } //赢法的统计数组 var myWin = []; var computerWin = []; //赢法数组 var wins = []; for(var i = 0; i < 15; i++){   wins[i] = [];   for(var j = 0; j < 15; j++){     wins[i][j] = [];   } } var count = 0; //赢法总数 //横线赢法 for(var i = 0; i < 15; i++){   for(var j = 0; j < 11; j++){     for(var k = 0; k < 5; k++){       wins[i][j+k][count] = true;     }     count++;   } } //竖线赢法 for(var i = 0; i < 15; i++){   for(var j = 0; j < 11; j++){     for(var k = 0; k < 5; k++){       wins[j+k][i][count] = true;     }     count++;   } } //正斜线赢法 for(var i = 0; i < 11; i++){   for(var j = 0; j < 11; j++){     for(var k = 0; k < 5; k++){       wins[i+k][j+k][count] = true;     }     count++;   } } //反斜线赢法 for(var i = 0; i < 11; i++){   for(var j = 14; j > 3; j--){     for(var k = 0; k < 5; k++){       wins[i+k][j-k][count] = true;     }     count++;   } } for(var i = 0; i < count; i++){   myWin[i] = 0;   computerWin[i] = 0; } var chess = document.getElementById("chess"); var context = chess.getContext('2d'); context.strokeStyle = '#bfbfbf'; //边框颜色 var logo = new Image(); logo.src = 'img/logo.png'; logo.onload = function(){   context.drawImage(logo,0,0,450,450);   drawChessBoard(); } document.getElementById("restart").onclick = function(){   window.location.reload(); } chess.onclick = function(e){   if(over){     return;   }   if(!me){     return;   }   var x = e.offsetX;   var y = e.offsetY;   var i = Math.floor(x / 30);   var j = Math.floor(y / 30);   if(chressBord[i][j] == 0){     oneStep(i,j,me);     chressBord[i][j] = 1;//我     for(var k = 0; k < count; k++){       if(wins[i][j][k]){         myWin[k]++;         computerWin[k] = 6;//这个位置对方不可能赢了         if(myWin[k] == 5){           window.alert('你赢了');           over = true;         }       }     }     if(!over){       me = !me;       computerAI();     }   } } //计算机下棋 var computerAI = function (){   var myScore = [];   var computerScore = [];   var max = 0;   var u = 0, v = 0;   for(var i = 0; i < 15; i++){     myScore[i] = [];     computerScore[i] = [];     for(var j = 0; j < 15; j++){       myScore[i][j] = 0;       computerScore[i][j] = 0;     }   }   for(var i = 0; i < 15; i++){     for(var j = 0; j < 15; j++){       if(chressBord[i][j] == 0){         for(var k = 0; k < count; k++){           if(wins[i][j][k]){             if(myWin[k] == 1){               myScore[i][j] += 200;             }else if(myWin[k] == 2){               myScore[i][j] += 400;             }else if(myWin[k] == 3){               myScore[i][j] += 2000;             }else if(myWin[k] == 4){               myScore[i][j] += 10000;             }             if(computerWin[k] == 1){               computerScore[i][j] += 220;             }else if(computerWin[k] == 2){               computerScore[i][j] += 420;             }else if(computerWin[k] == 3){               computerScore[i][j] += 2100;             }else if(computerWin[k] == 4){               computerScore[i][j] += 20000;             }           }         }         if(myScore[i][j] > max){           max = myScore[i][j];           u = i;           v = j;         }else if(myScore[i][j] == max){           if(computerScore[i][j] > computerScore[u][v]){             u = i;             v = j;           }         }         if(computerScore[i][j] > max){           max = computerScore[i][j];           u = i;           v = j;         }else if(computerScore[i][j] == max){           if(myScore[i][j] > myScore[u][v]){             u = i;             v = j;           }         }       }     }   }   oneStep(u,v,false);   chressBord[u][v] = 2;   for(var k = 0; k < count; k++){     if(wins[u][v][k]){       computerWin[k]++;       myWin[k] = 6;//这个位置对方不可能赢了       if(computerWin[k] == 5){         window.alert('计算机赢了');         over = true;       }     }   }   if(!over){     me = !me;   } } //绘画棋盘 var drawChessBoard = function(){   for(var i = 0; i < 15; i++){     context.moveTo(15 + i * 30 , 15);     context.lineTo(15 + i * 30 , 435);     context.stroke();     context.moveTo(15 , 15 + i * 30);     context.lineTo(435 , 15 + i * 30);     context.stroke();   } } //画旗子 var oneStep = function(i,j,me){   context.beginPath();   context.arc(15 + i * 30, 15 + j * 30, 13, 0, 2 * Math.PI);//画圆   context.closePath();   //渐变   var gradient = context.createRadialGradient(15 + i * 30 + 2, 15 + j * 30 - 2, 13, 15 + i * 30 + 2, 15 + j * 30 - 2, 0);   if(me){     gradient.addColorStop(0,'#0a0a0a');     gradient.addColorStop(1,'#636766');   }else{     gradient.addColorStop(0,'#d1d1d1');     gradient.addColorStop(1,'#f9f9f9');   }   context.fillStyle = gradient;   context.fill(); }

JavaScript有什么特点

1、js属于一种解释性脚本语言;2、在绝大多数浏览器的支持下,js可以在多种平台下运行,拥有着跨平台特性;3、js属于一种弱类型脚本语言,对使用的数据类型未做出严格的要求,能够进行类型转换,简单又容易上手;4、js语言安全性高,只能通过浏览器实现信息浏览或动态交互,从而有效地防止数据的丢失;5、基于对象的脚本语言,js不仅可以创建对象,也能使用现有的对象。

感谢各位的阅读!关于“JS+canvas如何实现的五子棋游戏”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI