js+html實現(xiàn)網(wǎng)頁五子棋
本文實例為大家分享了js+html實現(xiàn)網(wǎng)頁五子棋的具體代碼,供大家參考,具體內(nèi)容如下
最終效果圖:
廢話不多說,上源碼:
<!doctype html> <html> <head> ? ? <meta charset="utf-8"> ? ? <title>五子棋</title> ? ? <!-- ? ?<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"/>--> </head> <!--css--> <style> ? ? body { ? ? ? ? width: 800px; ? ? } ? ? ? #beginGameBtn { ? ? ? ? background: url(startImg.png); ? ? ? ? width: 80px; ? ? ? ? height: 25px; ? ? ? ? background-size: cover; ? ? ? ? float: left; ? ? } ? ? ? #restartGameBtn { ? ? ? ? background: url(restartImg.png); ? ? ? ? width: 80px; ? ? ? ? height: 25px; ? ? ? ? background-size: cover; ? ? ? ? float: right; ? ? } ? ? ? td { ? ? ? ? width: 50px; ? ? ? ? height: 50px; ? ? ? ? margin: 0px; ? ? ? ? padding: 0px ? ? } </style> ? <!--js--> <script type="text/javascript"> ? ? ? var presentChess = 1;//當前執(zhí)棋方,1代表白旗,0代表黑棋 ? ? var beginFlag = 0;//0代表未開始游戲,1代表已開始游戲 ? ? var msg; ? ? var chessboard = new Array(10);//記錄下棋情況 ? ? for (var i = 0; i < 10; i++) { ? ? ? ? chessboard[i] = new Array(10); ? ? ? ? //初始化下棋情況,全為0 ? ? ? ? for (var j = 0; j < 10; j++) { ? ? ? ? ? ? chessboard[i][j] = -1; ? ? ? ? } ? ? } ? ? ? window.onload = function () { ? ? ? ? msg = document.getElementById('msg') ? ? } ? ? ? //返回三者最小值 ? ? function min(x, y, z) { ? ? ? ? return (x > y ? y : x) > z ? z : (x > y ? y : x) ? ? } ? ? ? function beginGame() { ? ? ? ? // beginFlag = 1; ? ? ? ? //綁定棋盤下棋事件 ? ? ? ? for (var i = 0; i < 100; i++) { ? ? ? ? ? ? document.getElementsByTagName('td')[i].onclick = palyChess; ? ? ? ? } ? ? } ? ? ? function restartGame() { ? ? ? ? for (var i = 0; i < 100; i++) { ? ? ? ? ? ? //document.getElementsByTagName('td')[i].onclick = ''; ? ? ? ? ? ? document.getElementsByTagName('td')[i].innerHTML = '';//清空棋子 ? ? ? ? ? } ? ? ? ? ? for (var i = 0; i < 10; i++) {//清空棋盤記錄 ? ? ? ? ? ? for (var j = 0; j < 10; j++) { ? ? ? ? ? ? ? ? chessboard[i][j] = -1; ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? ? //下棋 ? ? function palyChess() { ? ? ? ? //如果表格此處已經(jīng)下了棋,則返回 不作操作 ? ? ? ? text = this.innerHTML ? ? ? ? if (text != '') return; ? ? ? ? //放置棋子圖片得字符串 ? ? ? ? var bqiStr = "<img src=\"bqiImg.jpg\" width=\"100%\" ?height=\"90%\" ?alt=\"\"/>" ? ? ? ? var hqiStr = "<img src=\"hqiImg.jpg\" width=\"100%\" height=\"90%\" alt=\"\"/>" ? ? ? ? // console.log('1') ? ? ? ? if (presentChess == 1) { ? ? ? ? ? ? this.innerHTML = bqiStr; ? ? ? ? ? ? ? chessboard[this.parentNode.rowIndex][this.cellIndex] = 1; ? ? ? ? ? ? // setTimeout('', 3000); ? ? ? ? ? ? if (ifWin(this.parentNode.rowIndex, this.cellIndex)) ? ? ? ? ? ? ? ? if (presentChess == 1) alert('白棋方獲勝'); ? ? ? ? ? ? ? ? else alert('黑棋方獲勝'); ? ? ? ? ? ? presentChess = 0; ? ? ? ? ? ? msg.innerHTML = "黑棋"; ? ? ? ? ? } else { ? ? ? ? ? ? this.innerHTML = hqiStr; ? ? ? ? ? ? ? chessboard[this.parentNode.rowIndex][this.cellIndex] = 0; ? ? ? ? ? ? setTimeout('', 3000); ? ? ? ? ? ? if (ifWin(this.parentNode.rowIndex, this.cellIndex)) ? ? ? ? ? ? ? ? if (presentChess == 1) alert('白棋方獲勝'); ? ? ? ? ? ? ? ? else alert('黑棋方獲勝'); ? ? ? ? ? ? presentChess = 1; ? ? ? ? ? ? msg.innerHTML = "白棋"; ? ? ? ? } ? ? ? } ? ? ? //判斷是否勝利,h行,l列 ? ? function ifWin(h, l) { ? ? ? ? // var x = this.parentNode.rowIndex; ? ? ? ? // var y = this.cellIndex - 1; ? ? ? ? var s = 1;//記錄連子個數(shù) ? ? ? ? ? //判斷豎直方向 ? ? ? ? for (var i = 1; i <= (h > 4 ? 4 : h); i++) { ? ? ? ? ? ? if (chessboard[h - i][l] == presentChess) { ? ? ? ? ? ? ? ? s++; ? ? ? ? ? ? } else break; ? ? ? ? } ? ? ? ? for (var i = 1; i <= ((9 - h) > 4 ? 4 : (9 - h)); i++) { ? ? ? ? ? ? if (chessboard[h + i][l] == presentChess) { ? ? ? ? ? ? ? ? s++; ? ? ? ? ? ? } else break; ? ? ? ? } ? ? ? ? if (s >= 5) { ? ? ? ? ? ? return 1; ? ? ? ? } ? ? ? ? ? s = 1; ? ? ? ? //判斷水平方向 ? ? ? ? for (var i = 1; i <= (l > 4 ? 4 : l); i++) { ? ? ? ? ? ? if (chessboard[h][l - i] == presentChess) { ? ? ? ? ? ? ? ? s++; ? ? ? ? ? ? } else break; ? ? ? ? } ? ? ? ? for (var i = 1; i <= ((9 - l) > 4 ? 4 : (9 - l)); i++) { ? ? ? ? ? ? if (chessboard[h][l + i] == presentChess) { ? ? ? ? ? ? ? ? s++; ? ? ? ? ? ? } else break; ? ? ? ? } ? ? ? ? if (s >= 5) { ? ? ? ? ? ? return 1; ? ? ? ? } ? ? ? ? ? s = 1; ? ? ? ? // var min=(h > 4 ? 4 : h) > l ? l : (h > 4 ? 4 : h); ? ? ? ? //判斷左上、右下斜線方向 ? ? ? ? for (var i = 1; i <= min(4, l, h); i++) {//取較小值作為移動半徑 ? ? ? ? ? ? if (chessboard[h - i][l - i] == presentChess) { ? ? ? ? ? ? ? ? s++; ? ? ? ? ? ? } else break; ? ? ? ? } ? ? ? ? for (var i = 1; i <= min(4, 9 - l, 9 - h); i++) { ? ? ? ? ? ? if (chessboard[h + i][l + i] == presentChess) { ? ? ? ? ? ? ? ? s++; ? ? ? ? ? ? } else break; ? ? ? ? } ? ? ? ? if (s >= 5) { ? ? ? ? ? ? return 1; ? ? ? ? } ? ? ? ? ? s = 1; ? ? ? ? //判斷右上、左下斜線方向 ? ? ? ? for (var i = 1; i <= min(4, 9 - l, h); i++) {//取較小值作為移動半徑 ? ? ? ? ? ? if (chessboard[h - i][l + i] == presentChess) { ? ? ? ? ? ? ? ? s++; ? ? ? ? ? ? } else break; ? ? ? ? } ? ? ? ? for (var i = 1; i <= min(4, l, 9 - h); i++) { ? ? ? ? ? ? if (chessboard[h + i][l - i] == presentChess) { ? ? ? ? ? ? ? ? s++; ? ? ? ? ? ? } else break; ? ? ? ? } ? ? ? ? if (s >= 5) { ? ? ? ? ? ? return 1; ? ? ? ? } ? ? ? ? return 0; ? ? } </script> <body> <!--頂部--> <div> ? ? <div style="margin:0 auto; width:165px"> ? ? ? ? <!--開始游戲按鈕--> ? ? ? ? <button id="beginGameBtn" name="beginGameBtn" onclick="beginGame()"></button> ? ? ? ? <!--重新開始游戲按鈕--> ? ? ? ? <button id="restartGameBtn" name="restartGameBtn" onclick="restartGame()"></button> ? ? </div> ? ? <div style="margin:0 auto; width:150px">執(zhí)子方:<label id="msg" name="msg">白棋</label></div> </div> <br> ? <!--下部--> <div> ? ? <div style="float:left; width:120px"> ? ? ? </div> ? ? <div style="margin:0 auto; width:500px "> ? ? ? ? <!--表格構(gòu)成棋盤--> ? ? ? ? <table border="5" style="width:500px; height:500px; border-collapse:collapse; "> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? ? ? <td></td> ? ? ? ? ? ? </tr> ? ? ? ? </table> ? ? </div> </div> </body> </html>
里面用到了4張圖片,開始按鈕圖,重新開始按鈕圖,白棋子圖,黑棋子圖。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- node.js利用socket.io實現(xiàn)多人在線匹配聯(lián)機五子棋
- js實現(xiàn)網(wǎng)頁五子棋進階版
- JavaScript+canvas實現(xiàn)五子棋游戲
- js數(shù)組案例之五子棋游戲
- 純JS實現(xiàn)五子棋游戲兼容各瀏覽器(附源碼)
- 基于JavaScript實現(xiàn)五子棋游戲
- Javascript和HTML5利用canvas構(gòu)建Web五子棋游戲?qū)崿F(xiàn)算法
- JS canvas繪制五子棋的棋盤
- H5+C3+JS實現(xiàn)五子棋游戲(AI篇)
- Node.js+Socket.io實現(xiàn)雙人在線五子棋對戰(zhàn)
相關(guān)文章
JS數(shù)組按指定字段轉(zhuǎn)map-list結(jié)構(gòu)(示例詳解)
在開發(fā)過程中經(jīng)常會出現(xiàn)接口返回整個數(shù)組,我們需要將數(shù)組進行二次處理,這篇文章主要介紹了js?數(shù)組按指定字段轉(zhuǎn)map-list結(jié)構(gòu),需要的朋友可以參考下2023-11-11用jquery.sortElements實現(xiàn)table排序
實現(xiàn)table排序,網(wǎng)上有很多解決方案,很多都基于jQuery,最后我選擇用sortElements,實現(xiàn)很簡單2014-05-05編寫跨瀏覽器的javascript代碼必備[js多瀏覽器兼容寫法]
下面比較了幾種瀏覽器之間的差異,在寫javascript代碼時 要時刻注意這些差異2008-10-10基于JavaScript實現(xiàn)繼承機制之原型鏈(prototype chaining)的詳解
我們知道在JavaScript中定義類的原型方式,而原型鏈擴展了這種方式,以一種有趣的方式實現(xiàn)繼承機制。prototype 對象是個模板,要實例化的對象都以這個模板為基礎(chǔ)??偠灾琾rototype 對象的任何屬性和方法都被傳遞給那個類的所有實例。原型鏈利用這種功能來實現(xiàn)繼承機制2013-05-05JSON.parse損壞大數(shù)字的原因解析及解決方案
從10多年前JSON在線編輯器的早期開始,用戶經(jīng)常反映編輯器有時會破壞他們JSON文檔中的大數(shù)字的問題,這篇文章主要介紹了為什么JSON.parse會損壞大數(shù)字,如何解決這個問題,需要的朋友可以參考下2022-10-10