简介

本篇实现效果只包括双人的游戏方式

若想实现单人也就是人机的游戏方式可以看下一篇

链接:JS实现五子棋单人双人简易游戏(下)

先看实现效果如下


以下为全部源码

1.HTML

代码如下:

<!DOCTYPE HTML>
<html>
<head><title> 五子棋 </title><link rel="stylesheet" type="text/css" href="css/style.css">
</head><body><button id='btn'>新游戏</button><canvas id='canvas' width='450' height='450'></canvas>
</body>
<script src="js/tool.js"></script>
</html>

2.CSS

代码如下:

body{margin: 0;background-color: #ccc;
}
#canvas{display: block; /* 块元素 */margin: 20px auto;background-color: #946136;
}
#btn{display: block; /* 块元素 */margin: 25px auto;width: 100px;font-size: 18px;color: #fff;background-color: #000;border-radius:10px; /* 按钮圆角 */border: 2px solid #eee; /* 按钮边框 */}
#btn:hover {/* 按钮鼠标悬停 */color: #000;background-color: #fff;cursor: pointer; /* 显示的光标的类型 */box-shadow: 0 5px 15px #999; /* 按钮添加阴影 */
}
#btn:active {/* 按钮鼠标点击 */color: #fff;background-color: #666;box-shadow: 0 5px 5px #666;transform: translateY(4px);/*对按钮进行移动*/
}

3.JS

代码如下:

var canvas = document.querySelector('#canvas');//获取画布元素
var btn = document.querySelector('#btn');//获取按钮元素
var ctx = canvas.getContext('2d');//获取绘制环境
var chesscolor = ['BLACK','WHITE'];//落子颜色
var step = 0;//记录当前步数
var flag = true;//记录游戏状态
var maparr = [];//记录棋盘状态
//检测棋子方向
var mode = [[1,0],//水平[0,1],//垂直 [1,1],//左上右下[1,-1]//右上左下
];//绘制文字
ctx.font="70px Arial";
ctx.fillText('Start Game!',40,235);
//点击按钮事件
btn.onclick = function(){startGame();cleanChessBoard();drawChessBoard();
};checkchess(canvas);//开始游戏
function startGame(){//记录棋盘状态for(var i=0;i<14;i++){maparr[i] = [];for(var j=0;j<14;j++){maparr[i][j] = 0;             }   }flag = true;step = 0;
}//绘制棋盘
function drawChessBoard(){for(var i=1;i<15;i++){/*绘制路径*/ctx.moveTo(30*i,30);ctx.lineTo(30*i,420);ctx.moveTo(30,30*i);ctx.lineTo(420,30*i);                }ctx.stroke();/* 绘制(轮廓) */ctx.beginPath();/* 提笔 */
}//清除棋盘
function cleanChessBoard(){ctx.fillStyle = '#946136';ctx.fillRect(0, 0, canvas.width, canvas.height);
}//落子机制
function checkchess(canvas){canvas.addEventListener('click',function(e){//棋子坐标var px = Math.floor((e.offsetX+15)/30)-1;var py = Math.floor((e.offsetY+15)/30)-1;//判断游戏是否结束if(!flag){alert('Game Over!');return;}//检测是否在棋盘上落子if((px+1)*30==0 || (py+1)*30==0 || (px+1)*30==450 || (py+1)*30==450){return;}if(maparr[px][py] == 0){//落子drawchess((px+1)*30,(py+1)*30,chesscolor[step%2]);//记录落子颜色maparr[px][py] = chesscolor[step%2];//检测哪方胜负for(var i=0;i<mode.length;i++){checkwin(px,py,chesscolor[step%2],mode[i]);}step++;}});
}//绘制棋子
function drawchess(x,y,color){//传入颜色,位置,绘制棋子ctx.fillStyle = color;//填充颜色ctx.arc(x,y,15,0,Math.PI*2,false);//画圆: 圆心 半径 弧度 逆时针ctx.fill();//填充//ctx.stroke();ctx.beginPath();//提笔
}//输赢机制
function checkwin(x,y,color,mode){//状态: 黑 白 没赢  var count = 0;//记录个数for(var i=1;i<5;i++){if(maparr[x+i*mode[0]]){if(maparr[x+i*mode[0]][y+i*mode[1]] == color){count++;}else{break;}}}for(var i=1;i<5;i++){if(maparr[x-i*mode[0]]){if(maparr[x-i*mode[0]][y-i*mode[1]] == color){count++;}else{break;}}}//判断个数是否达到胜利个数  if(count >= 4){alert(color+ " WIN! ");ctx.font="70px Arial";ctx.fillText("Game Over!",40,235);flag = false;//游戏结束}}

参考链接:js实现简易五子棋游戏

JS实现双人五子棋简易游戏(上)相关推荐

  1. 用js实现双人五子棋小游戏

    这是自己自学js的时候,在网上找的js源码,由于是自学,花了数小时才把这个源码大致弄明白. 大致算法 自定义棋盘规格,直接在棋盘建新div就可以,长度宽度用计算就可以了.下棋,在div里再建class ...

  2. php 设计五子棋游戏,基于js+canvas实现五子棋小游戏

    本文实例为大家分享了js+canvas实现五子棋小游戏的具体代码,供大家参考,具体内容如下 效果展示: 源码展示: 五子棋 * { margin: 0; padding: 0; } body { ma ...

  3. js+html5双人五子棋(源码下载)

    代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type ...

  4. JS实现五子棋单人双人简易游戏(下)

    目录 一.简介 二.游戏实现效果如下 三.以下为源码 1.HTML 2.CSS 3.JS 一.简介 此版包括了单人模式(人机模式)和双人模式 只需要双人模式的可以看这篇:JS实现双人五子棋简易游戏(上 ...

  5. C语言实践——双人五子棋(进阶版)

    双人五子棋 前言 一.棋盘的美化 二.棋子的美化 三.棋盘的打印 四.控制台修改颜色 五.五子棋源代码 前言  上一篇文章讲了如何用C语言写一个简易的双人五子棋小游戏,但是存在一些缺陷,比如棋盘太&q ...

  6. c++ 双人五子棋(可直接复制)

    今天,我给大家带来一个五子棋的代码,希望大家喜欢. 下面是代码: #include <iostream> #include <conio.h> using namespace ...

  7. C++实现五子棋小游戏(源代码)

    >求关注,求点赞,求评论< Thanks♪(・ω・)ノ 这次发个简单的 废话不多说 下为代码☟☟☟ #include <iostream> #include <conio ...

  8. Java实现五子棋小游戏(附思路讲解,全部代码,游戏截图)

    本文章是如何实现一个单机版双人五子棋小游戏,通过Swing技术进行可视操作. 个人简介:

  9. 五子棋小游戏(JS+Node+Websocket)可分房间对战

    主要通过js.canvas.node.websocket来实现五子棋游戏. tip:如果你想清楚的了解怎么实现,请一步步看思路流程,文章最后有项目的gitee地址.对应B站视频,可直接食用. 首先搭建 ...

  10. 基于控制台的五子棋小游戏(简易)

    基于控制台的五子棋小游戏(简易) 展示 源码: 使用: GoBang类: 展示 话不多说上代码 Don't talk much, say the code! 源码: 使用: new完直接运行 publ ...

最新文章

  1. 卧槽!又一个Python神器!
  2. Oracle实例迁移_真实场景实操
  3. 在计算机领域做研究的一些想法-- 转载
  4. android o测试版,一加手机可升级!谷歌已正式推送Android O测试版系统
  5. 【Linux】一步一步学Linux——readonly命令(219)
  6. [AHOI2013]作业
  7. 原创内容屡屡被盗?从源头对资源盗用说NO
  8. android百度地图 描点,百度地图批量描点写字
  9. 晨哥真有料丨生而为人,你讨好世界的样子真的很丑!(讨好型人格)
  10. SpringCloud的Ribbon自定义负载均衡算法
  11. python输出unicode字符_如何在Python中打印Unicode字符?
  12. Vue中使用axio跨域请求外部WebService接口
  13. HDU4565 So Easy! (矩阵)
  14. 用华为手机现在还不知道这5种实用功能,几千块白花了,太浪费了
  15. 【机器学习炼丹炉】使用便宜的x99和二手显卡,单显卡的学习机器在3000元,多显卡更贵,可以用支架,架起显卡,用做算法的学习使用,模型训练需要显卡的算力支持,低成本做算法研究,万一从入门到放弃了呢
  16. 移动硬盘不能识别的常见7种解决方案 ~ By 逆天经验
  17. 软件体系结构KWIC索引结构
  18. 什么是SaaS? 定义软件即服务
  19. E - Selling Souvenirs(动态规划 + 贪心 + 思维(缩小时间复杂度和空间复杂度))
  20. Mediawiki环境搭建

热门文章

  1. 2022情人节送男朋友什么礼物好,情人节送礼推荐
  2. 如何将360全景图导出高清短视频分享到视频平台上?
  3. 使用逆火日志分析器简单分析日志
  4. 前端智能化实践——可微编程
  5. 解决双启动GRLDR missing故障的方法
  6. 麒麟服务器操作系统V10虚拟机安装
  7. oracle 索引 lob 迁移,Oracle Lob类型存储浅析( alter index lob索引 rebuild tablespace XX报错问题)...
  8. Kotlin 异常处理之 Option、Either、Result
  9. HighCharts一个基于JavaScript的图表插件
  10. 在Windows系统上部署DHCP服务器