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 相关文章推荐
jquery.validate的使用说明介绍
Nov 12 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
Mar 03 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
Apr 20 Javascript
深入理解JS addLoadEvent函数
May 20 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
Jun 30 Javascript
完美解决iview 的select下拉框选项错位的问题
Mar 02 Javascript
小试SVG之新手小白入门教程
Jan 08 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
vue导航栏部分的动态渲染实例
Nov 01 Javascript
vue项目配置使用flow类型检查的步骤
Mar 18 Javascript
js实现ajax的用户简单登入功能
Jun 18 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
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
node.js中的http.get方法使用说明
2014/12/14 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
python for 循环获取index索引的方法
2019/02/01 Python
如何基于python操作excel并获取内容
2019/12/24 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
Linux的主要特性
2016/09/03 面试题
毕业自我评价范文
2013/11/17 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
人事部专员岗位职责
2014/03/04 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
技校毕业生自荐书
2014/05/23 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
结婚堵门保证书
2015/05/08 职场文书
Python爬取某拍短视频
2021/06/11 Python
python unittest单元测试的步骤分析
2021/08/02 Python