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 相关文章推荐
列表内容的选择
Jun 30 Javascript
js prototype 格式化数字 By shawl.qiu
Apr 02 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
Feb 18 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
Apr 18 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
May 03 Javascript
简单谈谈javascript中的变量、作用域和内存问题
Aug 30 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
Canvas实现放射线动画效果
Feb 15 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
vue 简单自动补全的输入框的示例
Mar 12 Javascript
jQuery实现动态加载select下拉列表项功能示例
May 31 jQuery
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
Feb 20 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 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
js 字符串操作函数
2009/07/25 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
python实现数据写入excel表格
2018/03/25 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
python 安装移动复制第三方库操作
2020/07/13 Python
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
文体活动总结范文
2014/05/05 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
小学教师个人总结
2015/02/05 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
四年级语文教学反思
2016/03/03 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
Python实现简繁体转换
2021/06/07 Python
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL