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 相关文章推荐
jquery load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
图片翻转效果具体实现代码
Jan 09 Javascript
javascript如何使用bind指定接收者
May 04 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
JavaScript替换当前页面的方法
Apr 03 Javascript
js实现新年倒计时效果
Dec 10 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
Apr 01 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
Mar 15 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
bootstrap轮播模板使用方法详解
Nov 17 Javascript
js实现上传图片到服务器
Apr 11 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
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
又一个PHP实现的冒泡排序算法分享
2014/08/21 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
python根据出生年份简单计算生肖的方法
2015/03/27 Python
快速了解python leveldb
2018/01/18 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python递归下载文件夹下所有文件
2019/08/31 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
大学旷课检讨书
2014/01/28 职场文书
毕业生党员个人总结
2015/02/14 职场文书
经理聘任证明
2015/03/02 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
读书笔记怎么写
2015/07/01 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python