国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

原生JS+Canvas實(shí)現(xiàn)五子棋游戲

2019-11-19 15:52:01
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了JS  Canvas實(shí)現(xiàn)五子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下

<!DOCTYPE html> <html>   <head>     <meta charset="utf-8" />     <title>五子棋</title>     <style type='text/css'>       canvas {         display: block;         margin: 50px auto;         box-shadow: -2px -2px 2px #efefef, 5px 5px 5px #b9b9b9;         cursor: pointer;       }       .btn-wrap {          display: flex;          flex-direction: row;          justify-content:center;       }       .btn-wrap div {          margin: 0 10px;       }       div>span {         display: inline-block;         padding: 10px 20px;         color: #fff;         background-color: #EE82EE;         border-radius: 5px;         cursor: pointer;       }       div.unable span {          background: #D6D6D4;          color: #adacaa;       }       #result-wrap {text-align: center;}     </style>   </head>   <body>     <h3 id="result-wrap">--益智五子棋--</h3>     <canvas id="chess" width="450px" height="450px"></canvas>     <div class="btn-wrap">       <div id='restart' class="restart">         <span>重新開始</span>       </div>       <div id='goback' class="goback unable">         <span>悔棋</span>       </div>       <div id='return' class="return unable">         <span>撤銷悔棋</span>       </div>     </div>     <script type="text/javascript" charset="utf-8">       var over = false;       var me = true; //我       var _nowi = 0, _nowj = 0; //記錄自己下棋的坐標(biāo)       var _compi = 0, _compj = 0; //記錄計(jì)算機(jī)當(dāng)前下棋的坐標(biāo)       var _myWin = [], _compWin = []; //記錄我,計(jì)算機(jī)贏的情況       var backAble = false, returnAble = false;        var resultTxt = document.getElementById('result-wrap');       var chressBord = [];//棋盤       for(var i = 0; i < 15; i++){         chressBord[i] = [];         for(var j = 0; j < 15; j++){           chressBord[i][j] = 0;         }       }       //贏法的統(tǒng)計(jì)數(shù)組       var myWin = [];       var computerWin = [];       //贏法數(shù)組       var wins = [];       for(var i = 0; i < 15; i++){         wins[i] = [];         for(var j = 0; j < 15; j++){           wins[i][j] = [];         }       }       var count = 0; //贏法總數(shù)       //橫線贏法       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++;         }       }       // debugger;       for(var i = 0; i < count; i++){         myWin[i] = 0;         _myWin[i] = 0;         computerWin[i] = 0;         _compWin[i] = 0;       }       var chess = document.getElementById("chess");       var context = chess.getContext('2d');       context.strokeStyle = '#bfbfbf'; //邊框顏色       var backbtn = document.getElementById("goback");       var returnbtn = document.getElementById("return");       window.onload = function(){         drawChessBoard(); // 畫棋盤       }       document.getElementById("restart").onclick = function(){         window.location.reload();       }       // 我,下棋       chess.onclick = function(e){         if(over){           return;         }         if(!me){           return;         }         // 悔棋功能可用         backbtn.className = backbtn.className.replace( new RegExp( "(//s|^)unable(//s|$)" )," " );          var x = e.offsetX;         var y = e.offsetY;         var i = Math.floor(x / 30);         var j = Math.floor(y / 30);         _nowi = i;         _nowj = j;         if(chressBord[i][j] == 0){           oneStep(i,j,me);           chressBord[i][j] = 1; //我,已占位置                                for(var k = 0; k < count; k++){ // 將可能贏的情況都加1             if(wins[i][j][k]){               // debugger;               myWin[k]++;               _compWin[k] = computerWin[k];               computerWin[k] = 6;//這個(gè)位置對方不可能贏了               if(myWin[k] == 5){                 // window.alert('你贏了');                 resultTxt.innerHTML = '恭喜,你贏了!';                 over = true;               }             }           }           if(!over){             me = !me;             computerAI();           }         }            }       // 悔棋       backbtn.onclick = function(e){         if(!backAble) { return;}         over = false;         me = true;         // resultTxt.innerHTML = 'o(

主站蜘蛛池模板:
九寨沟县|
中西区|
靖宇县|
柘荣县|
乌恰县|
房山区|
伊宁县|
攀枝花市|
沅陵县|
恩施市|
澄江县|
平顶山市|
蒲城县|
鲁甸县|
三穗县|
黔江区|
武宁县|
泽库县|
安陆市|
奉化市|
察哈|
松溪县|
江西省|
郴州市|
托克逊县|
得荣县|
体育|
海伦市|
金坛市|
莱阳市|
宁津县|
清远市|
新竹县|
全椒县|
武汉市|
浠水县|
厦门市|
高唐县|
富民县|
宣城市|
荣昌县|