原生js實(shí)現(xiàn)五子棋游戲
本文實(shí)例為大家分享了js實(shí)現(xiàn)五子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下
html:
<body> <h2>五子棋游戲</h2> <div id="box"> <div id="box01"></div> <div id="box02">haha</div> </div> </body>
css:
<style type="text/css">
*{
margin: 0;
padding: 0;
}
body{
/*overflow: hidden;*/
margin-top: 10px;
text-align: center;
background-color: #C7C7C7;
}
#box{
position: relative;
border: 1px solid;
margin: 20px auto;
width: 546px;
height: 546px;
background-color: #C7C7C7;
}
#box .squre{
width: 40px;
height: 40px;
border: 1px solid;
float: left;
}
#box01 .squre:hover{
background-color: pink;
}
#box01{
position: absolute;
/*border: 1px solid;*/
margin: 0 auto;
width: 588px;
height: 588px;
/*background-color: pink;*/
/*opacity: 0.5;*/
top: -20px;
left: -20px;
}
#box01 .qz{
width: 30px;
height: 30px;
border: 1px solid #C7C7C7;
float: left;
border-radius: 50%;
margin: 5px;
}
#box01 .qz:hover{
background-color: pink;
}
#box02{
position: absolute;
line-height: 546px;
font-size: 50px;
color: black;
width: 100%;
background-color: pink;
display: none;
opacity: 0.6;
}
</style>
script:
<script type="text/javascript">
window.onload = function () {
let box = document.getElementById("box");
let box01 = document.getElementById("box01");
//畫棋盤
let arr = new Array();
for (let i=0;i<13;i++){
arr[i] = new Array();
for (let j=0;j<13;j++){
arr[i][j] = document.createElement("div");
arr[i][j].className = "squre";
box.appendChild(arr[i][j]);
}
}
//畫棋子
let arr01 = new Array();
for (let i=0;i<14;i++){
arr01[i] = new Array();
for (let j=0;j<14;j++){
arr01[i][j] = document.createElement("div");
arr01[i][j].className = "qz";
box01.appendChild(arr01[i][j]);
}
}
for (let m=0;m<14;m++){
for (let n=0;n<14;n++){
arr01[m][n].onclick = function () {
//下棋之前統(tǒng)計(jì)一下黑白棋的個(gè)數(shù),以便黑白交換下棋
let count = 0;
for (let l = 0; l < 14; l++) {
for (let k = 0; k < 14; k++){
if (arr01[l][k].style.backgroundColor != "") {
count++;
}
}
}
// console.log(count);
if (this.className == "qz" && count % 2 == 0 && this.style.backgroundColor == "") {
//下棋
this.style.backgroundColor = "black";
//引入判斷函數(shù)
// console.log(m,n);
checkGame(m, n);
} else if (this.className == "qz" && count % 2 != 0 && this.style.backgroundColor == "") {
//下棋
this.style.backgroundColor = "white";
//引入判斷函數(shù)
checkGame(m, n);
}
}
}
}
//判斷哪方輸贏,四個(gè)方向(橫向、縱向、左斜、右斜)
//m是y軸,n是x軸
let a,b;
let flag = 0;
let box02 = document.getElementById("box02");
function checkGame(a,b) {
//判斷橫向
let qzColor = arr01[a][b].style.backgroundColor;
// console.log(qzColor);
for (let k=(b-4);k<=(b+4);k++){
if (k>=0 && k < 14){
if (qzColor == arr01[a][k].style.backgroundColor && arr01[a][k].style.backgroundColor != ""){
flag++;
if (flag == 5){
// alert(qzColor+" win!!");
box02.innerHTML = qzColor+" win!!";
box02.style.display = "block";
}
} else {
flag = 0;
}
} else {
flag = 0;
}
}
//判斷縱向
for (let k=(a-4);k<=(a+4);k++){
if (k>=0 && k < 14){
if (qzColor == arr01[k][b].style.backgroundColor && arr01[k][b].style.backgroundColor != ""){
flag++;
if (flag == 5){
// alert(qzColor+" win!!");
box02.innerHTML = qzColor+" win!!";
box02.style.display = "block";
}
} else {
flag = 0;
}
} else {
flag = 0;
}
}
//判斷左斜
let ax = (a-4);//ax用來記錄橫坐標(biāo)的變化
for (let k=(b-4);k<=(b+4);k++){
if (k>=0 && k < 14 && ax>=0 && ax<14){
if (qzColor == arr01[ax][k].style.backgroundColor && arr01[ax][k].style.backgroundColor != ""){
flag++;
if (flag == 5){
// alert(qzColor+" win!!");
box02.innerHTML = qzColor+" win!!";
box02.style.display = "block";
}
} else {
flag = 0;
}
} else {
flag = 0;
}
ax++;
}
//判斷右斜
bx = a-4;
for (let k=(b+4);k>=(b-4);k--){
if (k>=0 && k < 14 && bx>=0 && bx<14){
if (qzColor == arr01[bx][k].style.backgroundColor && arr01[bx][k].style.backgroundColor != ""){
flag++;
if (flag == 5){
// alert(qzColor+" win!!");
box02.innerHTML = qzColor+" win!!";
box02.style.display = "block";
}
} else {
flag = 0;
}
} else {
flag = 0;
}
bx++;
}
}
}
</script>
更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS+CSS實(shí)現(xiàn)Li列表隔行換色效果的方法
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)Li列表隔行換色效果的方法,實(shí)例分析了js操作li節(jié)點(diǎn)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02
微信小程序云函數(shù)添加數(shù)據(jù)到數(shù)據(jù)庫的方法
這篇文章主要介紹了微信小程序云函數(shù)添加數(shù)據(jù)到數(shù)據(jù)庫的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
javascript轉(zhuǎn)換靜態(tài)圖片,增加粒子動(dòng)畫效果
這篇文章主要介紹了javascript轉(zhuǎn)換靜態(tài)圖片,增加粒子動(dòng)畫效果,非常的炫酷,需要的朋友可以參考下2015-05-05
javascript內(nèi)存分配原理實(shí)例分析
這篇文章主要介紹了javascript內(nèi)存分配原理,結(jié)合實(shí)例形式分析了javascript原始值和引用值內(nèi)存分配的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04
promise處理多個(gè)相互依賴的異步請求(實(shí)例講解)
下面小編就為大家?guī)硪黄猵romise處理多個(gè)相互依賴的異步請求(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
uni-app微信小程序使用echarts的詳細(xì)圖文教程
為了兼容小程序Canvas,ECharts提供了一個(gè)小程序的組件,用這種方式可以方便地使用ECharts,下面這篇文章主要給大家介紹了關(guān)于uni-app微信小程序使用echarts的相關(guān)資料,需要的朋友可以參考下2022-10-10
7個(gè)讓JavaScript變得更好的注意事項(xiàng)
這篇文章主要介紹了7個(gè)讓JavaScript變得更好的注意事項(xiàng),十分詳盡,需要的朋友可以參考下2015-01-01
用js來刷新當(dāng)前頁面保留參數(shù)的具體實(shí)現(xiàn)
本文為大家詳細(xì)介紹下如何使用js來刷新當(dāng)前頁面保留參數(shù),下面有個(gè)不錯(cuò)的實(shí)現(xiàn)大家可以看看2013-12-12

