js+html實(shí)現(xiàn)網(wǎng)頁(yè)五子棋
本文實(shí)例為大家分享了js+html實(shí)現(xiàn)網(wǎng)頁(yè)五子棋的具體代碼,供大家參考,具體內(nèi)容如下
最終效果圖:
廢話不多說(shuō),上源碼:
<!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;//當(dāng)前執(zhí)棋方,1代表白旗,0代表黑棋 ? ? var beginFlag = 0;//0代表未開(kāi)始游戲,1代表已開(kāi)始游戲 ? ? 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; ? ? ? ? //綁定棋盤(pán)下棋事件 ? ? ? ? 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++) {//清空棋盤(pán)記錄 ? ? ? ? ? ? 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;//記錄連子個(gè)數(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++) {//取較小值作為移動(dòng)半徑 ? ? ? ? ? ? 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++) {//取較小值作為移動(dòng)半徑 ? ? ? ? ? ? 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"> ? ? ? ? <!--開(kāi)始游戲按鈕--> ? ? ? ? <button id="beginGameBtn" name="beginGameBtn" onclick="beginGame()"></button> ? ? ? ? <!--重新開(kāi)始游戲按鈕--> ? ? ? ? <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)成棋盤(pán)--> ? ? ? ? <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張圖片,開(kāi)始按鈕圖,重新開(kāi)始按鈕圖,白棋子圖,黑棋子圖。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- node.js利用socket.io實(shí)現(xiàn)多人在線匹配聯(lián)機(jī)五子棋
- js實(shí)現(xiàn)網(wǎng)頁(yè)五子棋進(jìn)階版
- JavaScript+canvas實(shí)現(xiàn)五子棋游戲
- js數(shù)組案例之五子棋游戲
- 純JS實(shí)現(xiàn)五子棋游戲兼容各瀏覽器(附源碼)
- 基于JavaScript實(shí)現(xiàn)五子棋游戲
- Javascript和HTML5利用canvas構(gòu)建Web五子棋游戲?qū)崿F(xiàn)算法
- JS canvas繪制五子棋的棋盤(pán)
- H5+C3+JS實(shí)現(xiàn)五子棋游戲(AI篇)
- Node.js+Socket.io實(shí)現(xiàn)雙人在線五子棋對(duì)戰(zhàn)
相關(guān)文章
js流動(dòng)式效果顯示當(dāng)前系統(tǒng)時(shí)間
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)流動(dòng)式時(shí)間效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05JS數(shù)組按指定字段轉(zhuǎn)map-list結(jié)構(gòu)(示例詳解)
在開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)出現(xiàn)接口返回整個(gè)數(shù)組,我們需要將數(shù)組進(jìn)行二次處理,這篇文章主要介紹了js?數(shù)組按指定字段轉(zhuǎn)map-list結(jié)構(gòu),需要的朋友可以參考下2023-11-11用jquery.sortElements實(shí)現(xiàn)table排序
實(shí)現(xiàn)table排序,網(wǎng)上有很多解決方案,很多都基于jQuery,最后我選擇用sortElements,實(shí)現(xiàn)很簡(jiǎn)單2014-05-05編寫(xiě)跨瀏覽器的javascript代碼必備[js多瀏覽器兼容寫(xiě)法]
下面比較了幾種瀏覽器之間的差異,在寫(xiě)javascript代碼時(shí) 要時(shí)刻注意這些差異2008-10-10基于JavaScript實(shí)現(xiàn)繼承機(jī)制之原型鏈(prototype chaining)的詳解
我們知道在JavaScript中定義類(lèi)的原型方式,而原型鏈擴(kuò)展了這種方式,以一種有趣的方式實(shí)現(xiàn)繼承機(jī)制。prototype 對(duì)象是個(gè)模板,要實(shí)例化的對(duì)象都以這個(gè)模板為基礎(chǔ)??偠灾?,prototype 對(duì)象的任何屬性和方法都被傳遞給那個(gè)類(lèi)的所有實(shí)例。原型鏈利用這種功能來(lái)實(shí)現(xiàn)繼承機(jī)制2013-05-05js寫(xiě)的評(píng)論分頁(yè)(還不錯(cuò))
js寫(xiě)的分頁(yè)在網(wǎng)上可以搜到很多的文章,在也為大家介紹一個(gè),喜歡的的朋友可以參考下2013-12-12JSON.parse損壞大數(shù)字的原因解析及解決方案
從10多年前JSON在線編輯器的早期開(kāi)始,用戶(hù)經(jīng)常反映編輯器有時(shí)會(huì)破壞他們JSON文檔中的大數(shù)字的問(wèn)題,這篇文章主要介紹了為什么JSON.parse會(huì)損壞大數(shù)字,如何解決這個(gè)問(wèn)題,需要的朋友可以參考下2022-10-10