原生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 相关文章推荐
网页里控制图片大小的相关代码
Jun 13 Javascript
繁简字转换功能
Jul 19 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
JavaScript实现经纬度转换成地址功能
Mar 28 Javascript
小程序文字跑马灯效果
Dec 28 Javascript
JavaScript创建防篡改对象的方法分析
Dec 30 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
ES6入门教程之变量的解构赋值详解
Apr 13 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 15 Javascript
vue实现页面切换滑动效果
Jun 29 Javascript
详解vue3.0 diff算法的使用(超详细)
Jul 01 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 21 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(2)――PHP类型
2010/02/15 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
php实现数字补零的方法总结
2018/09/12 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
Angular2库初探
2017/03/01 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
python根据unicode判断语言类型实例代码
2018/01/17 Python
python版本的仿windows计划任务工具
2018/04/30 Python
PyTorch搭建多项式回归模型(三)
2019/05/22 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
会计专业自我鉴定
2014/02/10 职场文书
2014年司法所工作总结
2014/11/22 职场文书
开学第一周总结
2015/07/16 职场文书