本篇文章给大家带来的内容是关于canvas实现五子棋游戏的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果

代码

五子棋

(function () { // 画布绘制

let canvas = document.getElementById("canvas");

let context = canvas.getContext("2d");

context.beginPath();

for (let i = 0; i < 19; i++) {

// 竖线绘制

context.moveTo(10 + i * 20, 10);

context.lineTo(10 + i * 20, 370);

// 横线绘制

context.moveTo(10, 10 + i * 20);

context.lineTo(370, 10 + i * 20);

}

context.stroke();

})();

// 鼠标单击

let blorwh = 0;

// 定义用于判断落子的二维数组

let matrix = new Array(19);

// 进行赋值

for(let i = 0; i < 19; i++){

matrix[i] = new Array(19);

for(let j = 0; j < 19; j++){

matrix[i][j] = 0;

}

}

$("#canvas").click((event) => {

// 每次落子的时候取反

blorwh = !blorwh;

console.log(event.offsetX);

let canvas = document.getElementById("canvas");

let context = canvas.getContext("2d");

// 保存要落子的坐标

let arcPosX, arcPosY;

// 保存棋子在数组中的位置

let mtxPosX, mtxPosY;

// 和每一条线进行比较,如果相差10个像素以内,即,靠近

for(let x = 0; x < 19; x++){

if(Math.abs(event.offsetX - (10 + x * 20)) < 10){

// 获得需要骡子的x

arcPosX = 10 + x * 20;

mtxPosX = x;

}

if(Math.abs(event.offsetY - (10 + x * 20)) < 10){

// 获得需要的y

arcPosY = 10 + x * 20;

mtxPosY = x;

}

}

// 画出棋子

// 落子为空,进行绘制,反之不绘制

if(matrix[mtxPosX][mtxPosY] == 0) {

context.beginPath();

if (blorwh) {

context.fillStyle = "white";

context.arc(arcPosX, arcPosY, 10, 0, Math.PI * 2, false);

context.stroke();

// 白子为1

matrix[mtxPosX][mtxPosY] = 1;

} else {

context.fillStyle = "black";

context.arc(arcPosX, arcPosY, 10, 0, Math.PI * 2, false);

// 黑子为2

matrix[mtxPosX][mtxPosY] = 2;

}

context.fill();

}

// 获胜检测

if(matrix[mtxPosX - 1][mtxPosY] == matrix[mtxPosX][mtxPosY] &&

matrix[mtxPosX - 2][mtxPosY] == matrix[mtxPosX][mtxPosY] &&

matrix[mtxPosX -3][mtxPosY] == matrix[mtxPosX][mtxPosY] &&

matrix[mtxPosY - 4][mtxPosY] == matrix[mtxPosX][mtxPosY]){

if(matrix[mtxPosX][mtxPosY] == 1){

alert("白方获胜");

}else{

alert("黑方获胜");

}

}

})

思路

创建数组用于保存五子棋的位置即可。

输赢判断使用遍历即可

重复落棋用判断保存的数组的位置是否已经有棋子即可

落在交叉线和附近的点判断,如果相差小于一定数值进行落棋。

php 设计五子棋游戏,canvas实现五子棋游戏的代码示例相关推荐

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

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

  2. HTML五子棋游戏论文,五子棋毕业论文-HTML开发五子棋的原型设计.doc

    毕业设计论文 院校:广州城建职业学院 院系:信息工程学院 班级:15软件五班 姓名:黄智彬 学号:1504220518 题目:h5的五子棋 指导老师:俞新凯 日期:2017年11月20 摘要 随着IT ...

  3. 五子棋人机对战_原生JS+Canvas实现五子棋游戏

    原生JS+Canvas实现五子棋游戏 效果图 主要功能模块为: 1.人机对战功能 2.悔棋功能 3.撤销悔棋功能 二.代码详解 2.1 人机对战功能实现 从效果图可以看到,棋盘的横竖可以放的位置为15 ...

  4. html五子棋悔棋,原生 JS + Canvas 实现五子棋游戏

    原标题:原生 JS + Canvas 实现五子棋游戏 || 一.功能模块 先看下现在做完的效果: 线上体验: https://wj704.github.io/five_game.html 主要功能模块 ...

  5. 【C#+Socker+SQL Server】实现可多人联机和对话的五子棋游戏 五:五子棋大厅窗体设计(附源码和资源)

    需要源码请点赞关注收藏后评论区留言私信~~~ 一.五子棋大厅窗体概述 五子棋大厅窗体主要是在游戏者进入指定区域的指定 房间后,在用户信息列表框中显示当前进入房间的所有用户信息,当单击指定位置时,在座位 ...

  6. Win32游戏制作之---五子棋的简单设计

    想必每个人都玩过五子棋,其实对于我而言,五子棋是小时候玩的最多的棋类游戏,当然小时候也爱玩象棋以及国际象棋之类的,不过由于五子棋比较简单,所以就先实现一个简单的人机五子棋.最近我就在想如今学会了一点编 ...

  7. 使用原生JS+Canvas实现五子棋游戏

    布局+样式部分代码 : <style type='text/css'>canvas {display: block;margin: 50px auto;box-shadow: -2px - ...

  8. Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋

    Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋 写在前面 需要用到的工具包和参考 游戏设定 初始化 切换下棋方 判断五子连珠(核心) 鼠标点击流程事件 成品展示 打 ...

  9. Android实现五子棋游戏(一) 游戏基本逻辑

    转载请注明出处:http://blog.csdn.net/a512337862/article/details/74165085 最近,写一个简单的五子棋游戏,效果如下: 现在其实还算不上一个真正的游 ...

最新文章

  1. 怎么html中加样式,简明教程 在HTML中添加样式表的方法
  2. 互换性与技术测量电子版_181套建设工程全套资料表格,从开工到完工,完整电子版手慢无...
  3. pureref 平移用不了_关于参考图管理神器 PureRef 的一些快捷键
  4. Docker实践(二)镜像
  5. Linux磁盘分区详解(fdisk)
  6. 重写DEV的DateEdit控件的类只选择年月
  7. 1. jQuery 简介
  8. Android Studio工程中添加移动广告平台广告条代码教程
  9. VS2010 winform程序发布步骤
  10. 数学问题(一):进制转换
  11. Snipaste2.7.3下载安装与使用(超实用的截图利器)
  12. TMS运输管理系统介绍
  13. python-函数读取内置函数序列化与反序列化
  14. Professional Microsoft Office SharePoint Designer 2007
  15. STM32串口中断接收实验
  16. 单片机设计中的软件测试,基于单片机设计的小电阻测试 - 控制/MCU - 电子发烧友网...
  17. 20个最好的在线网站 Fav 图标生成工具
  18. Google Play 引航 CastBox 加速出海之旅
  19. java 节假日_Java获取法定节假日并解析
  20. Anaconda安装caffe(超简单)

热门文章

  1. RT-Thread 入门学习笔记 - 解决RT_ASSERT失效的问题
  2. Ubuntu18.04 + kinova joca2机械臂 + RealSense D435i深度相机进行eye to hand手眼标定
  3. 【CEOI2015 Day2】世界冰球锦标赛( 提高+/省选-) 题解
  4. ironpython是什么意思_ironpython2.0以后,基于.net的什么特性
  5. 电脑怎么转换图片分辨率?照片如何看分辨率?
  6. 进销存表格模版制作软件
  7. CodeForces - 29A - Spit Problem
  8. 烂土豆Juicypotato提权原理和利用
  9. android LeanCloud 数据存储
  10. [JetBot] Jetson Nano安装COMFAST 5G双频无线网卡