原生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 相关文章推荐
Ajax一统天下之Dojo整合篇
Mar 24 Javascript
Jquery ui css framework
Jun 28 Javascript
jQuery实现表头固定效果的实例代码
May 24 Javascript
全面理解面向对象的 JavaScript(来自ibm)
Nov 10 Javascript
js onmousewheel事件多次触发问题解决方法
Oct 17 Javascript
JSON取值前判断
Dec 23 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
JS中创建函数的三种方式及区别
Mar 13 Javascript
js捕捉键盘事件和按键键值的方法
Oct 10 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
Js经典案例的实例代码
May 10 Javascript
JavaScript中的各种宽高属性的实现
May 08 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代码
2008/09/10 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
文本框的字数限制功能jquery插件
2009/11/24 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
2014年医学生毕业自我鉴定
2014/03/26 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
商场促销活动策划方案
2014/08/18 职场文书
学习十八大的心得体会
2014/09/01 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
平遥古城导游词
2015/02/03 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书