JS canvas绘制五子棋的棋盘


Posted in Javascript onMay 28, 2020

本文为大家分享了JS canvas绘制五子棋棋盘的具体代码,供大家参考,具体内容如下

box-shadow:给元素块周边添加阴影效果。
语法:box-shadow: h-shadow v-shadow blur spread color inset;
h-shadow: (必须)阴影的水平偏移量,如果是正值,则阴影在元素块右边;如果是负值,则阴影在元素块左边。
v-shadow: (必须)阴影的垂直偏移量,如果是正值,则阴影在元素块底部;如果是负值,则阴影在元素块顶部。
blur: (可选)阴影的模糊半径,其值大于等于0;为0时阴影不具有模糊效果,值越大阴影边缘越模糊。
spread: (可选)阴影扩展半径,值为正,整个阴影都扩大;值为负,整个阴影都缩小。
color: (可选)阴影颜色。
insert: (可选)不设值则默认为外部阴影,取insert则投影为内阴影。

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>五子棋</title>
 <style type="text/css">
 canvas{
 display: block;
 margin: 50px auto;
 box-shadow: -2px -2px 2px #F3F2F2, 5px 5px 5px #6F6767;
 }
 </style>
</head>
<body>
 <canvas id="mycanvas" width="450px" height="450px"></canvas>
 <script type="text/javascript">
 var chess = document.getElementById("mycanvas");
 var context = chess.getContext('2d');
 var me = true;
 var chessBox = [];//用于存放棋盘中落子的情况
 for(var i=0;i<15;i++){
  chessBox[i]=[];
  for(var j=0;j<15;j++){
  chessBox[i][j]=0;//初始值为0
  }
 }
 function drawChessBoard(){
  for(var i=0;i<15;i++){
  context.strokeStyle="#D6D1D1";
  context.moveTo(15+i*30,15);//垂直方向画15根线,相距30px;
  context.lineTo(15+i*30,435);
  context.stroke();
  context.moveTo(15,15+i*30);//水平方向画15根线,相距30px;棋盘为14*14;
  context.lineTo(435,15+i*30);
  context.stroke();
  }
 }
 drawChessBoard();//绘制棋盘
 function oneStep(i,j,k){
  context.beginPath();
  context.arc(15+i*30,15+j*30,13,0,2*Math.PI);//绘制棋子
  var g=context.createRadialGradient(15+i*30,15+j*30,13,15+i*30,15+j*30,0);//设置渐变
  if(k){    //k=true是黑棋,否则是白棋
  g.addColorStop(0,'#0A0A0A');//黑棋
  g.addColorStop(1,'#636766');
  }else {
  g.addColorStop(0,'#D1D1D1');//白棋
  g.addColorStop(1,'#F9F9F9');
  }
  context.fillStyle=g;
  context.fill();
  context.closePath();
 }
 chess.onclick=function(e){
  var x = e.offsetX;//相对于棋盘左上角的x坐标
  var y = e.offsetY;//相对于棋盘左上角的y坐标
  var i = Math.floor(x/30);
  var j = Math.floor(y/30);
  if( chessBox[i][j] == 0 ) {
  oneStep(i,j,me);
  if(me){
   chessBox[i][j]=1;
  }else{
   chessBox[i][j]=2;
  }
  me=!me;//下一步白棋
  }
 }
 </script>
</body>
</html>

效果图是这样的

JS canvas绘制五子棋的棋盘

更多有趣的经典小游戏实现专题,分享给大家:

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

Javascript 相关文章推荐
向左滚动文字 js代码效果
Aug 17 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
对Angular.js Controller如何进行单元测试
Oct 25 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
浅谈Vue的加载顺序探讨
Oct 25 Javascript
vue.js 实现输入框动态添加功能
Jun 25 Javascript
小程序开发基础之view视图容器
Aug 21 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
Jan 06 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 #Javascript
H5+C3+JS实现五子棋游戏(AI篇)
May 28 #Javascript
解决微信小程序防止无法回到主页的问题
Sep 28 #Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
Sep 28 #Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
May 28 #Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 #Javascript
vue element table 表格请求后台排序的方法
Sep 28 #Javascript
You might like
PHP批量生成缩略图的代码
2008/07/19 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
动态表格Table类的实现
2009/08/26 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
python改变日志(logging)存放位置的示例
2014/03/27 Python
python文件名和文件路径操作实例
2017/09/29 Python
Python实现进程同步和通信的方法
2018/01/02 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
办公室内勤岗位职责范本
2013/12/09 职场文书
演讲比赛主持词
2015/06/29 职场文书
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers