JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版的五子棋游戲
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版五子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下
根據(jù)畢老師的HTML+CSS+JavaScript教程和下載的一些文檔介紹自己在手機(jī)上寫(xiě)出來(lái)的一個(gè)簡(jiǎn)單五子棋,很簡(jiǎn)單的功能,許多功能都沒(méi)有實(shí)現(xiàn),寫(xiě)的過(guò)程中也遇到很多問(wèn)題,現(xiàn)在的代碼中也存在一些問(wèn)題,比如電腦下棋時(shí)沒(méi)有下到最右邊和最下邊,改來(lái)改去也還沒(méi)試出電腦下最右邊和最下邊一排的情況,但每一個(gè)字符都是自己敲出來(lái)的,清楚他們的功能,還是很有成就感的!先看下概貌吧!

上代碼
<html>
?
<head><!--頭部標(biāo)簽開(kāi)始-->
?
<title> New Document </title>
?? ??? ?
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
?? ?
<style type="text/css">
?? ?/*CSS區(qū)域*/
table{
?? ??? ?border: red 2px solid;
?? ??? ?border-collapse: collapse;
?? ??? ?text-align: center;
?? ?}
td,th{
?? ??? ?border: red 1px solid;
?? ??? ?padding: 5, 10, 5, 10;
?? ?}
</style>
?
<script type="text/javascript">
?? ?/*javascript區(qū)域*/
var BOARD_SIZE = 9;
var board = new Array();
var s = "";
?
function play()
{
?? ?if (board.length != 0)
?? ?{
?? ??? ?alert("游戲已經(jīng)開(kāi)始了,點(diǎn)擊“重新開(kāi)始”開(kāi)始新游戲");
?? ??? ?return;
?? ?}
?? ?init();
?? ?show();
}
?
function init()
{
//?? ?s = "";
?? ?board = new Array()
?? ?for (var i=0; i<BOARD_SIZE; i++)
?? ?{
//?? ??? ?s += ((i+1)+' ');
?? ??? ?board[i] = new Array();
?? ??? ?for (var j=0; j<BOARD_SIZE; j++)
?? ??? ?{
?? ??? ??? ?board[i][j] = "┼";
//?? ??? ??? ?s += board[i][j];
?? ??? ?}
//?? ??? ?s += "<br />";
?? ?}
//?? ?s += " ";
//?? ?for (var k=1; k<10; k++)
?? ?{
//?? ??? ?s += " "+k;?? ?
?? ?}
?? ?//alert(s);
}
?
function getBoard()
{
?? ?return board;
}
?
//var flag = false;?? ?//電腦沒(méi)下呢 ?電腦調(diào)用setChess又執(zhí)行了computerDo
?
function setChess(pos, chessMan)
{
?? ?if (!pos)
?? ?{
?? ??? ?return;
?? ?}
?? ?board[pos[0]][pos[1]] = chessMan;
?? ?show();
?? ?
?? ?if (chessMan=='●')
?? ?{
?? ??? ?computerDo();
?? ?}
?? ?/*
?? ?if (flag)
?? ?{
?? ??? ?return;
?? ?}
?? ?flag = false;
?? ??? ?if (!flag)
?? ?{
?? ??? ?computerDo();?? ?
?? ?}
?? ?else
?? ??? ?flag = false;
?? ?*/
}
?
function computerDo()
{
?? ?var x = parseInt(Math.random()*(BOARD_SIZE));
?? ?var y = parseInt(Math.random()*(BOARD_SIZE));
?? ?alert("Computer:"+x+"---"+y);
?? ?while (!checkPos(x+"", y+"") || hasChess(x-1,y-1))
?? ?{
?? ??? ?x = parseInt(Math.random()*(BOARD_SIZE));
?? ??? ?y = parseInt(Math.random()*(BOARD_SIZE));
?? ??? ?alert("Computer:"+x+"---"+y);
?? ?}
?? ?var pos = [x-1, y-1];
?? ?setChess(pos, "○");
}
?
function show()
{
?? ?s = "";
?? ?var node = document.getElementById("boardspan");
?? ?for (var i=0; i<BOARD_SIZE; i++)
?? ?{
?? ??? ?s += ((i+1)+' ');
?? ??? ?for (var j=0; j<BOARD_SIZE; j++)
?? ??? ?{
?? ??? ??? ?s += board[i][j];
?? ??? ?}
?? ??? ?s += "<br />";
?? ?}
?? ?s += " ";
?? ?for (var k=1; k<10; k++)
?? ?{
?? ??? ?s += " "+k;?? ?
?? ?}
?? ?node.innerHTML = s;
}
?
function rePlay()
{
?? ?init();
?? ?show();
}
?
?
function getPos()
{
?? ?var pos = new Array();
?? ?var x = document.getElementById("posx").value;
?? ?var y = document.getElementById("posy").value;
?? ?
?? ?if (!checkPos(x, y))
?? ?{
?? ??? ?alert("輸入位置有誤,請(qǐng)重新輸入!");
?? ??? ?return;
?? ?}
?
?? ?pos[0] = x - 1;
?? ?pos[1] = y - 1;
?
?? ?if (hasChess(pos[0], pos[1]))
?? ?{
?? ??? ?alert("該位置已有棋子,請(qǐng)重新輸入!");
?? ??? ?return;
?? ?}
?? ?/*/防止電腦調(diào)用setChess時(shí)自動(dòng)調(diào)用
?? ?document.getElementById("posx").value = "";
?? ?document.getElementById("posy").value = "";
?? ?*/
?? ?//alert(pos[0] + "::" + pos[1]);
?? ?return pos;
}
?
function hasChess(x, y)
{
?? ?return (board[x][y]!='┼')?true:false;
}
?
function checkPos(x, y)
{?? ?
?? ?var reg = "^[1-9]{1}$";
?? ?return (x.match(reg)&&y.match(reg))?true:false;
}
</script>
?
</head><!--頭部標(biāo)簽結(jié)束-->
?
<body><!--主體標(biāo)簽開(kāi)始-->
?? ?<!--注釋區(qū)域-->
<table>
<th colspan=3 style="font-size:24; color:green">五子棋</th>
<tr>
?? ?<td colspan=3>
?? ?<span id="boardspan">
?? ?棋盤(pán)顯示區(qū)
?? ?</span>
?? ?</td>
</tr>
<tr>
?? ?<td rowspan=2>落子位置</td>
?? ?<td>橫向:<input type="text" id="posx" size=4 /></td>
?? ?<td rowspan=2><input type="button" value="確定" οnclick="setChess(getPos(), '●')"</td>
?? ?<tr>
?? ??? ?<td>豎向:<input type="text" id="posy" size=4 /></td>
?? ?</tr>
</tr>
<tr>
?? ?<th><input type="button" value="開(kāi)始游戲" οnclick="play()" /></th>
?? ?<th colspan=2><input type="button" value="重新開(kāi)始" οnclick="rePlay()" /></th>
</tr>
?
</table>
?
?
</body><!--主體標(biāo)簽結(jié)束-->
?
</html>以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 中國(guó)象棋js代碼,僅演示,未能真下
- 詰屈聱牙之javascript中國(guó)象棋
- JavaScript模擬深藍(lán)vs卡斯帕羅夫的國(guó)際象棋對(duì)局示例
- JS小游戲之象棋暗棋源碼詳解
- JS+CSS繪制棋盤(pán)格的示例代碼
- Node.js+Socket.io實(shí)現(xiàn)雙人在線五子棋對(duì)戰(zhàn)
- js實(shí)現(xiàn)網(wǎng)頁(yè)五子棋進(jìn)階版
- 純JS實(shí)現(xiàn)五子棋游戲兼容各瀏覽器(附源碼)
- 基于JavaScript實(shí)現(xiàn)五子棋游戲
- js實(shí)現(xiàn)中國(guó)象棋游戲
相關(guān)文章
es6函數(shù)之尾調(diào)用優(yōu)化實(shí)例分析
這篇文章主要介紹了es6函數(shù)之尾調(diào)用優(yōu)化,結(jié)合實(shí)例形式分析了es6函數(shù)尾調(diào)用優(yōu)化相關(guān)功能、原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04
javascript搜索自動(dòng)提示功能的實(shí)現(xiàn)
使用 jQuery(Ajax)/PHP/MySQL實(shí)現(xiàn)自動(dòng)完成功我覺(jué)得我有必要寫(xiě)這個(gè)教程,因?yàn)樵?jīng)見(jiàn)到的大部分關(guān)于自動(dòng)完成的應(yīng)用程序都只是給你一個(gè)程序源碼包,然后告訴你怎么使用,而不是告訴你它是如何工作的以及為什么這樣做。2008-06-06
js下拉框二級(jí)關(guān)聯(lián)菜單效果代碼具體實(shí)現(xiàn)
這篇文章介紹了js下拉框二級(jí)關(guān)聯(lián)菜單效果代碼具體實(shí)現(xiàn),有需要的朋友可以參考一下2013-08-08
js實(shí)現(xiàn)分享到隨頁(yè)面滾動(dòng)而滑動(dòng)效果的方法
這篇文章主要介紹了js實(shí)現(xiàn)分享到隨頁(yè)面滾動(dòng)而滑動(dòng)效果的方法,實(shí)例分析了javascript操作頁(yè)面元素滾動(dòng)效果的方法,需要的朋友可以參考下2015-04-04
Extjs gridpanel 中的checkbox(復(fù)選框)根據(jù)某行的條件不能選中的解決方法
這篇文章主要介紹了Extjs gridpanel 中的checkbox(復(fù)選框)根據(jù)某行的條件不能選中的解決方法,需要的朋友可以參考下2017-02-02
JavaScript實(shí)現(xiàn)原型封裝輪播圖
這篇文章主要為大家詳細(xì)介紹了JavaScript原型封裝輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
js下將阿拉伯?dāng)?shù)字每三位一逗號(hào)分隔(如:15000000轉(zhuǎn)化為15,000,000)
這篇文章主要介紹了js下將阿拉伯?dāng)?shù)字每三位一逗號(hào)分隔(如:15000000轉(zhuǎn)化為15,000,000),需要的朋友可以參考下2014-06-06

