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 相关文章推荐
js使浏览器窗口最大化实现代码(适用于IE)
Aug 07 Javascript
Jquery Post处理后不进入回调的原因及解决方法
Jul 15 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
微信小程序 图片宽高自适应详解
May 11 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
React如何避免重渲染
Apr 10 Javascript
Vue中的methods、watch、computed的区别
Nov 26 Javascript
javascript异步编程的六种方式总结
May 17 Javascript
使用webpack搭建vue项目及注意事项
Jun 10 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 Javascript
Vue如何将页面导出成PDF文件
Aug 17 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之Smarty入门
2007/01/04 PHP
php中变量及部分适用方法
2008/03/27 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
python批量处理txt文件的实例代码
2020/01/13 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
如何利用find命令查找文件
2016/11/18 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
北京故宫的导游词
2015/01/31 职场文书
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫