五子棋的界面设计包括绘制棋盘、绘制棋子及黑白棋轮流落子。

涉及的知识点主要有canvas绘制直线、设置画笔颜色;canvas画圆、填充渐变色

1.绘制棋盘

先设定棋盘的宽、高;然后利用for循环,根据坐标使用context的一些方法来绘制

var drawChessBoard=function(){

for(var i=0;i<15;i++){ //棋盘宽高450,旁白15,间距30

context.moveTo(15+i*30,15);//竖线

context.lineTo (15+i*30,435);

context.stroke ();

context.moveTo(15,15+i*30);//横线
        context.lineTo(435,15+i*30);

context.stroke();

} }

2.绘制棋子

这里牵涉到canvas绘制圆的情况,用画弧形的方法来画圆,同时设置黑棋白琪两种颜色,用到了渐变对象,fill()函数用来填充的。

//绘画棋子需要首先会画圆 ,先开始一个路径,然后记得关闭该路径 
context.beginPath ();
context.arc(200,200,100,0,2*Math.PI );
//arc用来画扇形,此处用来画圆,前面两个参数为圆心坐标,接着为半径,起始弧度,种植弧度
context.closePath ();
var gradient=context.createRadialGradient (200,200,50,200,200,20);
//返回一个渐变的对象,前面三个参数为外圆心坐标和半径,后面三个为内圆心坐标和半径
gradient.addColorStop (0,"#0A0A0A");//外圆的颜色
gradient.addColorStop (1,"#636766");//内圆的颜色
context.fillStyle =gradient ;
context.fill();//fill是用来填充的*/

3.落子设置

我们需要在点击棋盘某个位置时候落子,则需要给canvas绑定一个onclick事件,根据坐标索引来确定落子的位置,同时为了防止一个位置可以同时落黑白两种棋我们需要先定义并初始化一个二维数组来存储棋盘上的位置及落子情况,然后将棋盘位置没有棋子设置为0,黑棋设置为1,白棋设置为2.点击一次之后改变对象的值即可实现轮流落子的动作。

chess.onclick=function(e){    
var x= e.offsetX;
var y= e.offsetY;
var i=Math.floor(x/30);//索引,下取整
var j=Math.floor(y/30);
if(chessBoard [i][j]==0){ //位置上没有棋子时候才让其落子
oneStep(i,j,me);//默认画的是黑棋
if(me){ //落完棋子后,为了区分落下的是黑棋还是白琪分别为其设定值
chessBoard [i][j]=1;
}else{
chessBoard [i][j]=2;
}
me=!me;//黑棋下完之后换白琪 }
}

源码:https://github.com/sunshineqt/webxt/tree/master/game-five-in-a-row

JavaScript实现五子棋的界面设计的更多相关文章

  1. JavaScript中国象棋程序(1) - 界面设计

    "JavaScript中国象棋程序" 这一系列教程将带你从头使用JavaScript编写一个中国象棋程序.这是教程的第1节. 这一系列共有9个部分: 0.JavaScript中国象 ...

  2. NanUI for Winform发布,让Winform界面设计拥有无限可能

    如今,尽管WPF.UWP大行其道,大有把Winform打残干废的趋势.但是还是有那么一波顽固不化的老家伙们固守着Winform,其中就包括我. 好吧,既然都说Winform做得软件不如WPF界面美观效 ...

  3. 对WEB前端的几段思考(一)——界面设计和性能优化(整理中)

    尽管我并非艺术出生,既没有任何设计基础,又没有较高艺术涵养,也深谙在短时间内创造一定艺术造诣并非易事,但是既然当初选择从事网站前端开发,我的目光不能仅停留在前端代码上.作为一名志向在前端领域发展的人员 ...

  4. React 可视化开发工具 Shadow Widget 非正经入门(之五:指令式界面设计)

    本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点.本篇解释 Shadow Widget 中类 Vue 的控制指令,与指令式界面设计相关. 1. 指令式界面设计 Vue 与 A ...

  5. Java界面设计 Swing(1)

    Java界面设计的用途 开发者可以通过Java SE开发丰富并且强大的具有图形界面的桌面应用程序.也可以设计一些提高效率的工具软件,帮助自己处理机械性工作. Java 的图形界面工具包,可以用于工具类 ...

  6. Android开发1:基本UI界面设计——布局和组件

    前言 啦啦啦~本学期要开始学习Android开发啦~ 博主在开始学习前是完完全全的小白,只有在平时完成老师要求的实验的过程中一步一步学习~从此篇博文起,博主将开始发布Android开发有关的博文,希望 ...

  7. iPhone / iPad UI界面设计与图标设计的尺寸设计规范+安卓+网页

    ①iPhone的设计尺寸 iPhone界面尺寸: 设备 分辨率 状态栏高度 导航栏高度 标签栏(工具栏)高度 iPhone6 plus设计版 1242 × 2208 60px 132px 146px ...

  8. 免费 PSD 素材:25个全新的界面设计资源

    在这篇文章中,我们给大家收集了25套全新的 UI 设计素材.这些来自优秀设计师的 PSD 源文件素材让其它的设计师们在设计用户界面原型的时候能够非常便利. 网站用户界面,移动应用程序用户界面和对设计师 ...

  9. 26款能够吸引用户的 iPhone App 界面设计

    在这个移动互联网告诉的时代,众多的移动应用程序涌现出来.谁能抓住用户的注意力,谁就有可能成功.在下面这些移动 App 界面设计中,你可以看到不同创意类型的视觉效果,让你获得灵感. 您可能感兴趣的相关文 ...

随机推荐

  1. BZOJ 1006 神奇的国度(弦图的染色数)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1006 题意:给定一个弦图,求最小染色数.就是用最小数目的颜色进行染色使得任意两个相邻的节 ...

  2. MySql性能优化相关

    原来使用MySql处理的数据量比较少,小打小闹的,没有关注过性能的问题.最近要处理的数据量飙升,每天至少20W行的新增数据,导致MySql在性能方面已经是差到不可用的地步了,必须要重视MySql的优化 ...

  3. linux tar命令

    tar命令打包还是压缩需要看所调用的命令参数....tar在使用时可以调用命令参数, 比如tar -xvf +文件名就是解包,但是不是解压...只有在使用了参数z等调用gzip等 压缩命令时才是压缩或 ...

  4. 构建一个简单的Maven项目

    这里用Maven Archetype插件从空白开始创建简单的项目. 熟悉Maven 项目和Maven的核心概念. 关键词:构建生命周期(build lifecycle), Maven仓库(reposi ...

  5. JS学习笔记(二) 数据类型

    参考资料: 1. http://www.w3school.com.cn/js/js_datatypes.asp 2. http://blog.sina.com.cn/s/blog_85c1dc1001 ...

  6. Threejs 使用的3D格式

    3D格式你可以通过任意软件导出(.3ds,dae等),但是threejs 无法使用, 1,http://www.blender.org/ 下载这款开源的3d软件 2,https://github.co ...

  7. 容易混淆的url src href

    新手刚学习的时候会分不清 url  src  href这些,不知道什么情况下应该用哪个.现在让我来理一理. url 统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网 ...

  8. JavaScript算法题之–随机数的生成

    JavaScript算法题之–随机数的生成 需求描述:从一组有序的数据中生成一组随机并且不重复的数,类似于简单的抽奖程序的实现. 先来生成一个有序的数组: 1 var arr = [], 2      ...

  9. LTE Module User Documentation(翻译6)——物理误差模型、MIMO模型、天线模型

    LTE用户文档 (如有不当的地方,欢迎指正!) 9 PHY Error Model   物理误差模型包含数据误差模型和下行控制误差模型,两者默认为激活.可以使用 ns-3 属性系统去激活,具体为:   ...

  10. SQL VIEW 使用语法

    之前一直都不知道VIEW有什么作用,写程序的时候也很少遇到过,复习SQL语句的时候碰到了,就记录下来吧. 什么是视图? 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 视图包含行和列, ...