原生js实现五子棋游戏


Posted in Javascript onMay 28, 2020

本文实例为大家分享了js实现五子棋游戏的具体代码,供大家参考,具体内容如下

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 () {
      //下棋之前统计一下黑白棋的个数,以便黑白交换下棋
      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";
       //引入判断函数
       // console.log(m,n);
       checkGame(m, n);

      } else if (this.className == "qz" && count % 2 != 0 && this.style.backgroundColor == "") {
       //下棋
       this.style.backgroundColor = "white";
       //引入判断函数
       checkGame(m, n);
      }
     }
    }
   }

   //判断哪方输赢,四个方向(横向、纵向、左斜、右斜)
   //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用来记录横坐标的变化
    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>

更多有趣的经典小游戏实现专题,分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
禁止js文件缓存的代码
Apr 09 Javascript
seajs1.3.0源码解析之module依赖有序加载
Nov 07 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
Jan 16 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
js正则表达式中exec用法实例
Jul 23 Javascript
浅谈js的html元素的父节点,子节点
Aug 06 Javascript
jquery 抽奖小程序实现代码
Oct 12 Javascript
微信小程序 教程之小程序配置
Oct 17 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
Apr 04 Javascript
Vue微信公众号网页分享的示例代码
May 28 #Javascript
纯JS实现五子棋游戏
May 28 #Javascript
js实现简单五子棋游戏
May 28 #Javascript
js实现双人五子棋小游戏
May 28 #Javascript
vue实现五子棋游戏
May 28 #Javascript
用vue 实现手机触屏滑动功能
May 28 #Javascript
Jquery高级应用Deferred对象原理及使用实例
May 28 #jQuery
You might like
php xfocus防注入资料
2008/04/27 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
教你安装python Django(图文)
2013/11/04 Python
Python类属性与实例属性用法分析
2015/05/09 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
Python实现句子翻译功能
2017/11/14 Python
wxpython实现图书管理系统
2018/03/12 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
python匿名函数用法实例分析
2019/08/03 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
python 星号(*)的多种用途
2020/09/21 Python
html5图片上传预览示例分享
2014/04/14 HTML / CSS
请解释流与文件有什么不同
2016/07/29 面试题
申报职称专业技术个人的自我评价
2013/12/12 职场文书