原声js 五子棋 源码
Welcome to use MarkDown
<style type="text/css">
.box{
width: 600px;
height: 600px;
background: url(img/bak.jpg) no-repeat;
background-size: cover;
margin: 30px auto;
border: 1px solid #000000;
}
</style>
<div class="box">
<canvas id="can" width="600" height="600px"></canvas>
</div>
<script type="text/javascript">
var maps = [];
for(var i=0;i<15;i++){
maps[i] = [];
for(var j=0;j<15;j++){
maps[i][j] = 0;
}
}
//制作棋盘
var can = document.getElementById("can");
var ctx = can.getContext('2d');
var isblack = true;
ctx.strokeStyle ="#000";
for(var i=0;i<15;i++){
for(var j=0;j<15;j++){
ctx.strokeRect(j*40,i*40,40,40)
}
}
//制作棋子
var black = new Image();
var white = new Image();
black.src = "img/black.png"
white.src = "img/white.png"
can.addEventListener('click',function(ev){
var dx = ev.clientX - can.offsetLeft;
var dy = ev.clientY - can.offsetTop;
// console.log(dx,dy)
var row =0;
var col =0;
if(dx%40<20){
row = Math.floor(dx/40)
}else{
row = Math.ceil(dx/40)
}
if(dy%40<20){
col = Math.floor(dy/40)
}else{
col = Math.ceil(dy/40)
}
// console.log(row,col)
if(isblack){
ctx.drawImage(black,row*40-20,col*40-20)
isblack = false;
maps[row][col] = 2 //黑
iswin(2,row,col)
}else{
ctx.drawImage(white,row*40-20,col*40-20)
isblack = true;
maps[row][col] = 1 //白
iswin(1,row,col)
}
//判断输赢
function iswin(t,row,col){
var orgrow = row ; //将目标点存起来
var orgcol = col ;
var total =1;
//垂直方向
while(col-1>0&&maps[row][col-1] == t){
total++;
col--;
}
row = orgrow ;
col = orgcol;
while(col+1<15&&maps[row][col+1] == t){
col++;
total++;
}
console.log(total)
if(total>=5){
if(t==1){
setTimeout(function(){alert('白子赢了')},500)
}else{
setTimeout(function(){alert('黑子赢了')},500);
}
}
//水平方向
row=orgrow;
col=orgcol;
total=1;
while(row-1>0&&maps[row-1][col]==t)
{
row--;
total++;
}
row=orgrow;
col=orgcol;
while(row+1<15&&maps[row+1][col]==t)
{
row++;
total++;
}
if(total>=5)
{
if(t==1)
alert("白子赢");
else
alert("黑子赢");
}
//左下和右上
row = orgrow ;
col = orgcol;
total =1;
while(row+1<15&&col-1>0&&maps[row+1][col-1]==t){
row++;
col--;
total++;
}
row = orgrow ;
col = orgcol;
while(row-1>0&&col+1<15&&maps[row-1][col+1] == t){
row--;
col++;
total++;
}
if(total>=5){
if(t==1){
setTimeout(function(){alert('白子赢了')},500)
}else{
setTimeout(function(){alert('黑子赢了')},500);
}
}
//右下和左上
row = orgrow ;
col = orgcol;
total=1;
while(row+1<15&&col+1<15&&maps[row+1][col+1]==t){
row++;
col++;
total++;
}
row = orgrow ;
col = orgcol;
while(row-1>0&&col-1>0&&maps[row-1][col-1] == t){
row--;
col--;
total++;
}
if(total>=5){
if(t==1){
setTimeout(function(){alert('白子赢了')},500)
}else{
setTimeout(function(){alert('黑子赢了')},500);
}
}
//至此所有方向游戏都结束呢
}
})
</script>
原声js 五子棋 源码的更多相关文章
- 从vue.js的源码分析,input和textarea上的v-model指令到底做了什么
v-model是 vue.js 中用于在表单表单元素上创建双向数据绑定,它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能:对,它本质上只是一个语法糖,但到底是一个 ...
- [百度地图] 用于类似 DWZ UI 框架的 百度地图 功能封装类 [MultiZMap.js] 实例源码
MultiZMap 功能说明 MultiZMap.js 本类方法功能大多使用 prototype 原型 实现,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架: 包含的 ...
- (原、整)Unreal源码 CoreUbject- Uobject
(原.整) Unreal源码 CoreUbject- Uobject 类别 [随笔分类]Unreal源码搬山 @author:白袍小道 随缘那啥 这里还是属于UE ...
- 深入Vue.js从源码开始(二)
从入口开始 我们之前提到过 Vue.js 构建过程,在 web 应用下,我们来分析 Runtime + Compiler 构建出来的 Vue.js,它的入口是 src/platforms/web/en ...
- 百度地图整合功能分享修正版[ZMap.js] 实例源码!
ZMap 功能说明 ZMap 是学习百度地图 api 接口,开发基本功能后整的一个脚本类,本类方法功能大多使用 prototype 原型 实现: 包含的功能有:轨迹回放,圈画区域可编辑,判断几个坐标是 ...
- 【 js 模块加载 】深入学习模块化加载(node.js 模块源码)
一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须按照一定的格式编写.AMD,CMD,CommonJS 是目前最常用的三种模块化书写规范. 1.AMD(Asy ...
- 深入理解 path-to-regexp.js 及源码分析
阅读目录 一:path-to-regexp.js 源码分析如下: 二:pathToRegexp 的方法使用 回到顶部 一:path-to-regexp.js 源码分析如下: 我们在vue-router ...
- JS StartMove源码-简单运动框架
这几天学习js运动应用课程时,开始接触一个小例子:“仿Flash的图片轮换播放器”,其中使用的StartMove简单运动框架我觉得挺好用的.这个源码也简单,理解其原理,自己敲即便也就熟悉了. 用的时候 ...
- 在centos7上安装gcc、node.js(源码下载)
一.在centos7中安装node.js https://www.cnblogs.com/lpbottle/p/7733397.html 1.从源码下载Nodejs cd /usr/local/src ...
随机推荐
- jQuery插件ImgAreaSelect 实例讲解二
在上一篇随笔http://www.cnblogs.com/chenguanai/p/6883401.html中,已经了解了头像的上传预览和裁剪功能:那么这次就再看一下imgareaselect的裁剪功 ...
- Java Primitives and Bits
Integer when processors were 16 bit, an int was 2 bytes. Nowadays, it's most often 4 bytes on a 32 b ...
- HttpGet和HttpPost
package net.blogjava.mobile; import java.net.HttpURLConnection; import java.util.ArrayList; import j ...
- jquery实现点击进行跳转后,改点击的元素添加选中的效果
<style> .active { color: red; } </style> //html代码 <ul id="tab2"> <li& ...
- pick off your glasses
我一直在想,为什么带眼镜时间长了机不愿意再摘下来呢,或者说摘下来感觉很不舒服.当然了,这更多的是内心里的一种感觉而已. 其实,我突然认为这是一种不自信,在这样一个物欲横流的社会中,当你眼前模模糊糊,而 ...
- 关于vue2用vue-cli搭建环境后域名代理的http-proxy-middleware
在vue中用http-proxy-middleware来进行接口代理,比如:本地运行环境为http://localhost:8080但真实访问的api为 http://www.baidu.com这时我 ...
- Python抓取成都房价信息
Python里scrapy爬虫 scrapy爬虫,正好最近成都房价涨的厉害,于是想着去网上抓抓成都最近的房价情况,顺便了解一下,毕竟咱是成都人,得看看这成都的房子我以后买的起不~ 话不多说,进入正题: ...
- 向EXECL文件中导入数据的同时插入图片
因为项目需要在导出数据到EXECL文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下. 首先代码写好之后放测试服务器上去执行的时候报错了,报检索 COM 类工厂中 CLSID 为 {0 ...
- 限制容器对CPU的使用 - 每天5分钟玩转 Docker 容器技术(28)
上节学习了如何限制容器对内存的使用,本节我们来看CPU. 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器 ...
- 我的第一个Java程序
我的第一个Java程序: class Test{ public static void main(String[] args) { System.out.println(" ...