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 相关文章推荐
一个挺有意思的Javascript小问题说明
Sep 26 Javascript
setInterval计时器不准的问题解决方法
May 08 Javascript
html文档中的location对象属性理解及常见的用法
Aug 13 Javascript
node.js中的fs.exists方法使用说明
Dec 17 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
jQuery动态星级评分效果实现方法
Aug 06 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
微信小程序支付之c#后台实现方法
Oct 19 Javascript
详解如何在angular2中获取节点
Nov 23 Javascript
用js简单提供增删改查接口
May 12 Javascript
vue 防止页面加载时看到花括号的解决操作
Nov 09 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
thinkphp连贯操作实例分析
2014/11/22 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
Symfony核心类概述
2016/03/17 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
jquery实现拖动效果
2016/08/10 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
python 控制语句
2011/11/03 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
python的range和linspace使用详解
2019/11/27 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
会计工作决心书
2014/03/11 职场文书
运动会加油稿
2015/07/22 职场文书
教学副校长工作总结
2015/08/13 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
护士业务学习心得体会
2016/01/25 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS