js五子棋游戏
//code
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#mycanvas{
position: absolute;
left: 0;
top: 0;
bottom:0;
right: 0;
background: #eee;
margin: auto;
border:1px solid #333;
box-shadow: 0 0 20px black;
}
</style>
</head>
<body>
<canvas width="600" id='mycanvas' height="600"></canvas>
<script>
(function(){
var arr=[];
var mycanvas=document.getElementById('mycanvas');
var context=mycanvas.getContext('2d');
var witch=true
var win=false
for(var i=0;i<15;i++){
arr[i]=[];
context.moveTo(i*40,0);
context.lineTo(i*40,600);
context.stroke()
context.moveTo(0,i*40);
context.lineTo(600,i*40);
context.stroke()
for(var j=0;j<15;j++){
arr[i][j]={
haschress:false,
who:""
};
}
// console.log(arr)
}
function drawarc(i,j,r){
if(arr[i][j].haschress||i==0||j==0||win){
return
}
context.beginPath();
context.arc(i*40,j*40 ,10,0,Math.PI*2);
context.fillStyle=(witch?'#fff':'#333');
context.fill();
context.stroke();
context.closePath();
arr[i][j].haschress=true;
arr[i][j].who=witch;
witch=!witch;
whowin(i,j)
}
function whowin(i,j,){
//水平
var count =0;
var current=arr[i][j].who;
for(var n=0;n<15;n++){
// console.log(arr[n][j].who)
if(arr[n][j].who===!witch){
count++;
if(count==5){
win=true;
!witch?alert('白棋赢了'):alert('黑棋赢了')
retutn
}
}else{
count=0
}
}
//垂直
count=0;
for(var n=0;n<15;n++){
console.log(arr[i][n].who)
if(arr[i][n].who===!witch){
count++;
if(count==5){
win=true;
!witch?alert('白棋赢了'):alert('黑棋赢了')
return
}
}else{
count=0
}
}
//左上
count=0;
// alert(i)
// alert(j)
//alert(1-(-1))
var num=Math.abs(j-i)
for(var n=0;n<15-num;n++){
if(arr[num-(-n)][n].who===!witch){
// alert(423432)
count++;
// alert(count)
if(count==5){
win=true;
!witch?alert('白棋赢了'):alert('黑棋赢了')
return
}
}else{
count=0
}
}
//左下
// debugger
count = 0
num=j-(-i);
for(var n=0;n<num;n++){
if(arr[n][num-n].who===!witch){
// alert(423432)
count++;
// alert(count)
if(count==5){
win=true;
!witch?alert('白棋赢了'):alert('黑棋赢了')
return
}
}else{
count=0
}
}
}
mycanvas.addEventListener('click',function(e){
var ev=e||window.event;
// var target=e.target||e.srcElement;
console.log(ev)
var i=(ev.offsetX/40).toFixed(0);
var j=(ev.offsetY/40).toFixed(0);;
drawarc(i,j);
})
})()
</script>
</body>
</html>
js五子棋游戏的更多相关文章
- js五子棋游戏代码分享
HTML代码 <canvas id="game"></canvas> CSS代码 * { margin: 0; padding: 0; } #game { ...
- 原生JS+Canvas实现五子棋游戏
一.功能模块 先看下现在做完的效果: 线上体验:https://wj704.github.io/five_game.html 主要功能模块为: 1.人机对战功能 2.悔棋功能 3.撤销悔棋功能 二.代 ...
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
- 基于Blazor写一个简单的五子棋游戏
写这个五子棋游戏,其实主要目的是想尝试一下微软新作Blazor.Blazor对于那些搞.NET的程序员,又想做一些前端工作,真的挺友好,不用一句JS就可搞定前端交互,美哉.现在已经有很流行的前端框架, ...
- Pomelo:网易开源基于 Node.js 的游戏服务端框架
Pomelo:网易开源基于 Node.js 的游戏服务端框架 https://github.com/NetEase/pomelo/wiki/Home-in-Chinese
- 自定义View实现五子棋游戏
成功的路上一点也不拥挤,因为坚持的人太少了. ---简书上看到的一句话 未来请假三天顺带加上十一回家结婚,不得不说真是太坑了,去年婚假还有10天,今年一下子缩水到了3天,只能赶着十一办事了. 最近还在 ...
- Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局
Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...
- 一个js小游戏----总结
花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用web ...
- js canvas游戏初级demo-躲避障碍物
在线演示地址 http://200ok.fun:3100/html/game_demo.html 继上次js canvas游戏初级demo-上下左右移动(https://www.cnblogs.com ...
随机推荐
- ToString()、Convert.ToString()、(string)、as string 的区别
通常 object 到 string 有四种方式(假设有object obj):obj.ToString().Convert.ToString().(string)obj.obj as string. ...
- Tribon/AM 数据库名字的含义
收集在这里备用 数据库名 Tribon环境变量 内容描述 船体型线数据库 SB_CGDB 船体外型信息 型表面,船体曲线,板缝 船体结构数据库 SB_OGDB 船体模型信息 板材数据库 SB_PLDB ...
- Linux Docker安装Jenkins
安装环境 操作系统 centos7.3 安装Docker,安装及配置见 <Docker之Docker介绍及安装配置> 安装Jenkins 下载Jenkins 命令:sudo docker ...
- [蓝桥杯]ALGO-16.算法训练_进制转换
问题描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样 ...
- html框内文字垂直居中的方法
由于无法知道框内文字的高度,很难确定垂直空间的位置.vertical-align:middle仅对td元素有效,无论单行和多行均可实现垂直居中.
- 51nod 1132 覆盖数字的数量 V2
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1132 题意是给定a,b,l,r求[l,r]内有几个整数可以表示成ax+b ...
- sql server 2008 R2 备份还原到sql 2012
从sql server 2008 r2备份的在sql server 2012中还原时一直读不到备份文件,然后把2008r2备份文件放到sql 2012的安装路径对应的Backup文件夹后可以读到了,不 ...
- python 指定文件编码的方法
import sys reload(sys) sys.setdefaultencoding('utf-8')
- 服务网关zuul之五:熔断
路由熔断 当我们的后端服务出现异常的时候,我们不希望将异常抛出给最外层,期望服务可以自动进行一降级.Zuul给我们提供了这样的支持.当某个服务出现异常时,直接返回我们预设的信息. 如果没有配置fall ...
- [UE4]认识Decorator
Decorator装饰器:即为其他行为树系统中的条件语句,附着于一个Composite(组合节点)或者Task(任务节点),并定义树中的一个分支或者单个节点是否可被执行. Decorator装饰器节点 ...