H5+C3+JS实现双人对战五子棋游戏(UI篇)


Posted in Javascript onMay 28, 2020

本篇文章实现的是双人对战模式,主要是实现除人机AI算法和判断输赢之外的其他功能,下一篇将会发布AI

框架搭建

<!Doctype html>
<html>

 <head>

  <!-- 百度爬虫优化 -->
  <meta http-equiv="author" content="成兮,缘分五月" />
  <meta http-equiv="Keywords" cotent="五子棋,人机大战,单人游戏,双人游戏,小游戏" />
  <meta Charset="utf-8" />

  <title>爱淘宝-五子棋</title>

  <style>
   #chess {
    display: block;
    margin: 50px auto;
    box-shadow: -2px -2px 2px #efefef , 5px 5px 5px #b9b9b9;
   }
   #chess:hover{
    cursor: pointer;
   }
  </style>

  <script>
   window.onload = function() {

   } ;
  </script>

 </head>

 <body>
  <!-- 棋盘 -->
  <canvas id="chess" width="450px" height="450px"></canvas>

 </body>

</html>

定义一些需要用到的全局变量

<script>
 //获取棋盘canvas
 var chess = document.getElementById("chess");
 //获取2d画布
 var context = chess.getContext('2d');
 //指定当前是否黑色下,只在UI中使用
 var me = true;
 //指定当前位置是否下了其,1代表黑,2代表白,0代表空
 var curIndex = [];
 for(var i =0; i <15; i++) {
  curIndex[i] = [];
  for(var j =0; j <15; j++)
   curIndex[i][j] = 0;
 }
</script>

使用canvas绘制棋盘

<script>
 function drawtable() {
  //我们设置棋盘总共15根横线15根总线,左右上下都有15px的边距,其中每个棋子相距30px,因此绘制棋盘从15px开始

  for(var i =0; i <15; i++)
   for(var j =0; j <15; j++)
    {
     //绘制横线
     context.moveTo(15, 15 +j *30);
     context.lineTo(435, 15 +j *30);
     //绘制竖线
     context.moveTo(15 +j *30, 15);
     context.lineTo(15 +j *30, 435); 

     //使用灰色描边
     context.strokeStyle = "#bfbfbf";
     context.stroke();
    }
 };
 drawtable();
</script>

棋盘的onclick事件:在该位置上绘制一个棋子,每次点击黑白相间

<script>
 chess.onclick = function(event) {
  //获取要下的棋子的位置
  var x = Math.floor(event.offsetX /30);
  var y = Math.floor(event.offsetY /30);
  //判断该点是否已被下了
  if(curIndex[x][y] != 0)
   return;
  //开始绘制
  context.beginPath();
  //绘制指定圆
  context.arc(15 +x *30, 15 +y *30, 15, 0, 2 *Math.PI);
  //进行填充
  if(me) {
   context.fillStyle = "#636766";
   curIndex[x][y] = 1;
   me = false;
  }
  else {
   context.fillStyle = "#b9b9b9";
   curIndex[x][y] = 2;
   me = true;
  }
  context.fill();
  //结束绘制
  context.closePath();
 };
</script>

最终效果图

H5+C3+JS实现双人对战五子棋游戏(UI篇)

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

Javascript 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
JQuery获取各种宽度、高度(format函数)实例
Mar 04 Javascript
超级简单的jquery操作表格方法
Dec 15 Javascript
使用mini-define实现前端代码的模块化管理
Dec 25 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 Javascript
基于JavaScript代码实现自动生成表格
Jun 15 Javascript
JS中的phototype详解
Feb 04 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
Jun 15 Javascript
Vue中使用webpack别名的方法实例详解
Jun 19 Javascript
vue实现中部导航栏布局功能
Jul 30 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 #Javascript
vue element table 表格请求后台排序的方法
Sep 28 #Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 #Javascript
在vue项目中正确使用iconfont的方法
Sep 28 #Javascript
vue项目引入字体.ttf的方法
Sep 28 #Javascript
vue打包相关细节整理(小结)
Sep 28 #Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 #Javascript
You might like
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
php生成shtml类用法实例
2014/12/09 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
form表单action提交的js部分与html部分
2014/01/07 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python编写打字训练小程序
2019/09/26 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
爱游人:Travelliker
2017/09/05 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
一套软件测试笔试题
2014/07/25 面试题
会计毕业生求职简历的自我评价
2013/10/20 职场文书
大学生就业自我鉴定
2013/10/26 职场文书
应届生服务员求职信
2013/10/31 职场文书
自荐书格式
2013/12/01 职场文书
应届大学生自荐信
2013/12/05 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
周年庆典主持词
2014/04/02 职场文书
毕业证代领委托书
2014/09/26 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
java设计模式--原型模式详解
2021/07/21 Java/Android