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 相关文章推荐
表单内同名元素的控制
Nov 22 Javascript
html+css+js实现xp window界面及有关功能
Mar 26 Javascript
JQuery中SetTimeOut传参问题探讨
May 10 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
Oct 08 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
Jan 13 Javascript
js实现简单的计算器功能
Jan 16 Javascript
使用mint-ui开发项目的一些心得(分享)
Sep 07 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
react 中父组件与子组件双向绑定问题
May 20 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
Aug 01 Javascript
js实现开关灯效果
Mar 30 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
Mar 10 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一些错误处理的方法与技巧总结
2013/08/10 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
JavaScript修改注册表实例代码
2020/01/05 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
python如何在终端里面显示一张图片
2016/08/17 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
scrapy-splash简单使用详解
2021/02/21 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
法警的竞聘演讲稿
2014/01/02 职场文书
孩子教育的心得体会
2014/09/01 职场文书
承租经营合作者协议书
2014/10/01 职场文书
导游词之介休绵山
2019/12/31 职场文书
javaScript Array api梳理
2021/03/31 Javascript
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技