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选择器总结
Jul 11 Javascript
node.js中的fs.chownSync方法使用说明
Dec 16 Javascript
jQuery中siblings()方法用法实例
Jan 08 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
避免jQuery名字冲突 noConflict()方法
Jul 30 Javascript
使用JavaScript为一张图片设置备选路径的方法
Jan 04 Javascript
EasyUI中的dataGrid的行内编辑
Jun 22 Javascript
JQuery 又谈ajax局部刷新
Nov 27 jQuery
js回溯法计算最佳旅行线路代码实例
Sep 11 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
Mar 04 Javascript
JS前端使用canvas实现物体的点选示例
Aug 05 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强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
Vue父子组件传值的一些坑
2020/09/16 Javascript
Python中tell()方法的使用详解
2015/05/24 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
电脑销售顾问自荐信
2014/01/29 职场文书
对标管理实施方案
2014/03/12 职场文书
学校对教师的评语
2014/04/28 职场文书
婚礼秀策划方案
2014/05/19 职场文书
班级心理活动总结
2014/07/04 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
项目验收申请报告
2015/05/15 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang