php 设计五子棋游戏,canvas实现五子棋游戏的代码示例
本篇文章给大家带来的内容是关于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实现五子棋游戏的代码示例相关推荐
- php 设计五子棋游戏,基于js+canvas实现五子棋小游戏
本文实例为大家分享了js+canvas实现五子棋小游戏的具体代码,供大家参考,具体内容如下 效果展示: 源码展示: 五子棋 * { margin: 0; padding: 0; } body { ma ...
- HTML五子棋游戏论文,五子棋毕业论文-HTML开发五子棋的原型设计.doc
毕业设计论文 院校:广州城建职业学院 院系:信息工程学院 班级:15软件五班 姓名:黄智彬 学号:1504220518 题目:h5的五子棋 指导老师:俞新凯 日期:2017年11月20 摘要 随着IT ...
- 五子棋人机对战_原生JS+Canvas实现五子棋游戏
原生JS+Canvas实现五子棋游戏 效果图 主要功能模块为: 1.人机对战功能 2.悔棋功能 3.撤销悔棋功能 二.代码详解 2.1 人机对战功能实现 从效果图可以看到,棋盘的横竖可以放的位置为15 ...
- html五子棋悔棋,原生 JS + Canvas 实现五子棋游戏
原标题:原生 JS + Canvas 实现五子棋游戏 || 一.功能模块 先看下现在做完的效果: 线上体验: https://wj704.github.io/five_game.html 主要功能模块 ...
- 【C#+Socker+SQL Server】实现可多人联机和对话的五子棋游戏 五:五子棋大厅窗体设计(附源码和资源)
需要源码请点赞关注收藏后评论区留言私信~~~ 一.五子棋大厅窗体概述 五子棋大厅窗体主要是在游戏者进入指定区域的指定 房间后,在用户信息列表框中显示当前进入房间的所有用户信息,当单击指定位置时,在座位 ...
- Win32游戏制作之---五子棋的简单设计
想必每个人都玩过五子棋,其实对于我而言,五子棋是小时候玩的最多的棋类游戏,当然小时候也爱玩象棋以及国际象棋之类的,不过由于五子棋比较简单,所以就先实现一个简单的人机五子棋.最近我就在想如今学会了一点编 ...
- 使用原生JS+Canvas实现五子棋游戏
布局+样式部分代码 : <style type='text/css'>canvas {display: block;margin: 50px auto;box-shadow: -2px - ...
- Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋
Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋 写在前面 需要用到的工具包和参考 游戏设定 初始化 切换下棋方 判断五子连珠(核心) 鼠标点击流程事件 成品展示 打 ...
- Android实现五子棋游戏(一) 游戏基本逻辑
转载请注明出处:http://blog.csdn.net/a512337862/article/details/74165085 最近,写一个简单的五子棋游戏,效果如下: 现在其实还算不上一个真正的游 ...
最新文章
- 怎么html中加样式,简明教程 在HTML中添加样式表的方法
- 互换性与技术测量电子版_181套建设工程全套资料表格,从开工到完工,完整电子版手慢无...
- pureref 平移用不了_关于参考图管理神器 PureRef 的一些快捷键
- Docker实践(二)镜像
- Linux磁盘分区详解(fdisk)
- 重写DEV的DateEdit控件的类只选择年月
- 1. jQuery 简介
- Android Studio工程中添加移动广告平台广告条代码教程
- VS2010 winform程序发布步骤
- 数学问题(一):进制转换
- Snipaste2.7.3下载安装与使用(超实用的截图利器)
- TMS运输管理系统介绍
- python-函数读取内置函数序列化与反序列化
- Professional Microsoft Office SharePoint Designer 2007
- STM32串口中断接收实验
- 单片机设计中的软件测试,基于单片机设计的小电阻测试 - 控制/MCU - 电子发烧友网...
- 20个最好的在线网站 Fav 图标生成工具
- Google Play 引航 CastBox 加速出海之旅
- java 节假日_Java获取法定节假日并解析
- Anaconda安装caffe(超简单)
热门文章
- RT-Thread 入门学习笔记 - 解决RT_ASSERT失效的问题
- Ubuntu18.04 + kinova joca2机械臂 + RealSense D435i深度相机进行eye to hand手眼标定
- 【CEOI2015 Day2】世界冰球锦标赛( 提高+/省选-) 题解
- ironpython是什么意思_ironpython2.0以后,基于.net的什么特性
- 电脑怎么转换图片分辨率?照片如何看分辨率?
- 进销存表格模版制作软件
- CodeForces - 29A - Spit Problem
- 烂土豆Juicypotato提权原理和利用
- android LeanCloud 数据存储
- [JetBot] Jetson Nano安装COMFAST 5G双频无线网卡