js+html實(shí)現(xiàn)網(wǎng)頁五子棋
本文實(shí)例為大家分享了js+html實(shí)現(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;//當(dāng)前執(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;//記錄連子個(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">
? ? ? ? <!--開始游戲按鈕-->
? ? ? ? <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張圖片,開始按鈕圖,重新開始按鈕圖,白棋子圖,黑棋子圖。




以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- node.js利用socket.io實(shí)現(xiàn)多人在線匹配聯(lián)機(jī)五子棋
- js實(shí)現(xiàn)網(wǎng)頁五子棋進(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繪制五子棋的棋盤
- 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-05
JS數(shù)組按指定字段轉(zhuǎn)map-list結(jié)構(gòu)(示例詳解)
在開發(fā)過程中經(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
編寫跨瀏覽器的javascript代碼必備[js多瀏覽器兼容寫法]
下面比較了幾種瀏覽器之間的差異,在寫javascript代碼時(shí) 要時(shí)刻注意這些差異2008-10-10
基于JavaScript實(shí)現(xiàn)繼承機(jī)制之原型鏈(prototype chaining)的詳解
我們知道在JavaScript中定義類的原型方式,而原型鏈擴(kuò)展了這種方式,以一種有趣的方式實(shí)現(xiàn)繼承機(jī)制。prototype 對(duì)象是個(gè)模板,要實(shí)例化的對(duì)象都以這個(gè)模板為基礎(chǔ)。總而言之,prototype 對(duì)象的任何屬性和方法都被傳遞給那個(gè)類的所有實(shí)例。原型鏈利用這種功能來實(shí)現(xiàn)繼承機(jī)制2013-05-05
JSON.parse損壞大數(shù)字的原因解析及解決方案
從10多年前JSON在線編輯器的早期開始,用戶經(jīng)常反映編輯器有時(shí)會(huì)破壞他們JSON文檔中的大數(shù)字的問題,這篇文章主要介紹了為什么JSON.parse會(huì)損壞大數(shù)字,如何解決這個(gè)問題,需要的朋友可以參考下2022-10-10

