H5+C3+JS实现双人对战五子棋游戏(UI篇)


Posted in Javascript onMay 28, 2020

本篇文章实现的是双人对战模式,主要是实现除人机AI算法和判断输赢之外的其他功能,下一篇将会发布AI

框架搭建

<!Doctype html>
<html>

 <head>

  <!-- 百度爬虫优化 -->
  <meta http-equiv="author" content="成兮,缘分五月" />
  <meta http-equiv="Keywords" cotent="五子棋,人机大战,单人游戏,双人游戏,小游戏" />
  <meta Charset="utf-8" />

  <title>爱淘宝-五子棋</title>

  <style>
   #chess {
    display: block;
    margin: 50px auto;
    box-shadow: -2px -2px 2px #efefef , 5px 5px 5px #b9b9b9;
   }
   #chess:hover{
    cursor: pointer;
   }
  </style>

  <script>
   window.onload = function() {

   } ;
  </script>

 </head>

 <body>
  <!-- 棋盘 -->
  <canvas id="chess" width="450px" height="450px"></canvas>

 </body>

</html>

定义一些需要用到的全局变量

<script>
 //获取棋盘canvas
 var chess = document.getElementById("chess");
 //获取2d画布
 var context = chess.getContext('2d');
 //指定当前是否黑色下,只在UI中使用
 var me = true;
 //指定当前位置是否下了其,1代表黑,2代表白,0代表空
 var curIndex = [];
 for(var i =0; i <15; i++) {
  curIndex[i] = [];
  for(var j =0; j <15; j++)
   curIndex[i][j] = 0;
 }
</script>

使用canvas绘制棋盘

<script>
 function drawtable() {
  //我们设置棋盘总共15根横线15根总线,左右上下都有15px的边距,其中每个棋子相距30px,因此绘制棋盘从15px开始

  for(var i =0; i <15; i++)
   for(var j =0; j <15; j++)
    {
     //绘制横线
     context.moveTo(15, 15 +j *30);
     context.lineTo(435, 15 +j *30);
     //绘制竖线
     context.moveTo(15 +j *30, 15);
     context.lineTo(15 +j *30, 435); 

     //使用灰色描边
     context.strokeStyle = "#bfbfbf";
     context.stroke();
    }
 };
 drawtable();
</script>

棋盘的onclick事件:在该位置上绘制一个棋子,每次点击黑白相间

<script>
 chess.onclick = function(event) {
  //获取要下的棋子的位置
  var x = Math.floor(event.offsetX /30);
  var y = Math.floor(event.offsetY /30);
  //判断该点是否已被下了
  if(curIndex[x][y] != 0)
   return;
  //开始绘制
  context.beginPath();
  //绘制指定圆
  context.arc(15 +x *30, 15 +y *30, 15, 0, 2 *Math.PI);
  //进行填充
  if(me) {
   context.fillStyle = "#636766";
   curIndex[x][y] = 1;
   me = false;
  }
  else {
   context.fillStyle = "#b9b9b9";
   curIndex[x][y] = 2;
   me = true;
  }
  context.fill();
  //结束绘制
  context.closePath();
 };
</script>

最终效果图

H5+C3+JS实现双人对战五子棋游戏(UI篇)

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

Javascript 相关文章推荐
Function.prototype.bind用法示例
Sep 16 Javascript
js style动态设置table高度
Oct 21 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
JavaScript正则表达式实例详解
Oct 16 Javascript
jquery实现(textarea)placeholder自动换行
Dec 22 Javascript
jQuery实现拖动剪裁图片作为头像
Dec 28 Javascript
jQuery验证表单格式的使用方法
Jan 10 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
Aug 28 Javascript
微信小程序点击顶部导航栏切换样式代码实例
Nov 12 Javascript
Element MessageBox弹框的具体使用
Jul 27 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 #Javascript
vue element table 表格请求后台排序的方法
Sep 28 #Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 #Javascript
在vue项目中正确使用iconfont的方法
Sep 28 #Javascript
vue项目引入字体.ttf的方法
Sep 28 #Javascript
vue打包相关细节整理(小结)
Sep 28 #Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 #Javascript
You might like
fgetcvs在linux的问题
2012/01/15 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
python批量修改文件后缀示例代码分享
2013/12/24 Python
从零学Python之入门(三)序列
2014/05/25 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
python 输出上个月的月末日期实例
2018/04/11 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
市场营销专业毕业生自荐信
2013/11/02 职场文书
应用艺术专业个人的自我评价
2014/01/03 职场文书
调解协议书
2014/04/16 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
体育专业自荐书
2014/05/29 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server