web前端之五子棋网页版小游戏

C++项目:在线五子棋对战(网页版) 本项⽬主要实现⼀个⽹⻚版的五⼦棋对战游戏,其主要⽀持以下核⼼功能:• 用户管理:实现用户注册,用户登录、获取用户信息、用户天梯分数记录、用户比赛场次记录等。• 匹配对战:实现两个玩家在网页端根据天梯分数匹配游戏对⼿,并进行五子棋游戏对战的功能。• 聊天功能:实现两个玩家在下棋的同时可以进⾏实时聊天的功能。 阅读详情

五子棋小游戏

这个五子棋小游戏,没有写成人机模式。

但大家可以尝试下自己饰演两个角色的五子棋,嘻嘻嘻

效果图片

在这里插入图片描述
在这里插入图片描述

效果

在这里插入图片描述
在这里插入图片描述

代码

index.html

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>简易五子棋游戏</title>
  <link rel="stylesheet" href="css/main.css">
  <script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
<h1>简易版五子棋小游戏</h1>
<h6>说明:体验下自己饰演两个角色的五子棋吧,嘻嘻。</h6>

<!--canvas是个画布,需要修改的是尺寸,不是修改样式-->
  <canvas id="canvas" width="450" height="450"></canvas>
  <div class="mol-main">
    <div class="mol-header">
      <h2>五子棋小游戏</h2>
    </div>
    <div class="mol-success white">
      白棋获胜
    </div>
    <div class="mol-success black">
      黑棋获胜
    </div>
    <br>
    <div>
      <button class="btn">关闭</button>
    </div>
  </div>
</body>
<script type="text/javascript" src="js/main.js"></script>
<script>
  $('.btn').click(function () {
    $('.mol-main').css('display','none');

  });
</script>
</html>

main.css

body{
    margin:0;
    background: #ccc;
}
h1{
    text-align: center;
}

h6{
    text-align: center;
    color: darkslategray;
}

/*------------棋盘-------------------------*/
#canvas{
    display: block;
    margin: 20px auto;

    background:#fff;
}
.mol-main{
    width:180px;
    height: 160px;
    margin: 0 auto;
    padding: 10px;

    background:#eee;
    border-radius: 10px;
    opacity: 0.9;

    position: absolute;
    top:25%;
    left: 40%;

    display: none;
}
.mol-header h2{
    text-align: left;
    font-weight: bold;
}
.mol-success{
    color: firebrick;
    font-weight: bold;
}

.white{
    display: none;
}
.black{
    display: none;
}

.btn{
    cursor: pointer;
    width: 70px;
    height: 30px;
    border-radius: 5px;
    text-align: center;
    font-weight: bold;;
    background: cadetblue;
    color: #000;
}
.btn:hover{
    background: lightseagreen;
    color: #fff;
}

main,js

/*
*1、绘制棋盘
    *1.1绘制棋盘中直线
* 2、绘制棋子
    *2.1绘制棋子
    * 2.2实现交互,点击下棋
    * 2.3黑白子棋交替操作
    * 2.4棋子落在棋盘交叉点上
    * 2.5设置已下棋处不得再进行操作
* 3、游戏胜负判断
    *当前所下的棋子参与到胜负判断中,此时下棋的人要么赢,要么不赢(输/继续进行)
    * 此时所下棋子的位置应当作为判断点
    * 一条线上左右颜色连续累加超过5,那么这个颜色就获胜
 */
//----------------------------------------------------

//获取到html的canvas标签
var canvas=document.querySelector('#canvas');
//获取绘制环境
var ctx =canvas.getContext('2d');

//创建棋子颜色数组
var chessColor=['#000','#fff'];

//棋盘数组
var maparr=[];

//判断哪方赢
var mode=[
    [1,0],//水平方向
    [0,1],//垂直方向
    [1,1],//右下 左上
    [1,-1]//右上 左下
];

//----------------------------------
//将棋盘上所有交叉点创建全为0的数组
//如果当数组为1时,说明已经有棋子了
for(var i=0;i<14;i++){
    maparr[i]=[];
    for(var j=0;j<14;j++){
        maparr[i][j]=0;
    }
}


//---设置游戏进行的步数-----为了实现黑白棋子交替进行操作--
var step=0;
/*----------绘制棋盘中直线--------------
*描述绘制路径
* 开始绘制
*/
function init() {
    //----------绘制15条垂直和水平直线---------------------
    for(var i=1;i<15;i++){
        //----绘制15条垂直直线------
        //在格子(30,30)处开始画线
        ctx.moveTo(30*i,30);
        //线画到(30,420)的位置
        ctx.lineTo(30*i,420);

        //----绘制15条水平直线-----
        //在格子(30,30)处开始画线
        ctx.moveTo(30,30*i);
        //线画到(420,30)的位置
        ctx.lineTo(420,30*i);
    }
    //-----开始绘制线--------------
    ctx.stroke();
}

init();

//--------绘制棋子---------------------
function drawChess(x,y,color){
    //修改填充颜色
    ctx.fillStyle=color;
    //画圆---圆心坐标轴(x,y)--半径15--起始点角度0--终点角度为2派---
    ctx.beginPath();
    ctx.arc(x,y,15,0,Math.PI*2,false);

    //ctx.fill()填充
    ctx.fill();
    ctx.stroke();
}


//-----下棋----并使棋子都在起哦安交叉线上-----------------------------
canvas.addEventListener('click',function(e){
    // console.log('点击棋盘');


    //--------------------------------------

    //e.offsetX和offsetY可以获取到点击时的坐标
    // console.log(e.offsetX,e.offsetY);

//--------实现所有棋子都在棋盘的交叉线上---------
    //math.floor()向下取整
    //+15---点下去的位置向右偏移15-----
    //----即使得在一个小正方形象限内位置任意点棋子都在那个交叉点出
    var dx =Math.floor((e.offsetX+15)/30)*30;
    var dy =Math.floor((e.offsetY+15)/30)*30;

    //点击落下棋子
    if(dx == 0 || dy == 0 || dx == 450 || dy == 450){
        return false;
    }

    //避免已有棋子的点再下一次
    if(maparr[dx/30-1][dy/30-1]==0){
        drawChess(dx,dy,chessColor[step%2]);
        maparr[dx/30-1][dy/30-1]=chessColor[step%2];

        checkSuccess(dx/30-1,dy/30-1,chessColor[step%2],mode[0]);
        checkSuccess(dx/30-1,dy/30-1,chessColor[step%2],mode[1]);
        checkSuccess(dx/30-1,dy/30-1,chessColor[step%2],mode[2]);
        checkSuccess(dx/30-1,dy/30-1,chessColor[step%2],mode[3]);

        step++;
    }
});

//-----------判断哪方赢------要么黑赢要么白赢--------------------
// var mode=[
//     [1,0],//水平方向
//     [0,1],//垂直方向
//     [1,1],//右下 左上
//     [1,-1]//右上 左下
// ];

//------根据mode数组检测不用方向-------------
function checkSuccess(x,y,color,mode) {
    // console.log(x,y,color);
    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]){
            if(maparr[x-i*mode[0]][y-i*mode[1]]==color){
                count++;
            }else{
                break;
            }
        }
    }
    // console.log('水平方向有',count+1,'个',color);
    if(count>=4){
        if(color=='#000'){
            //显示黑棋获胜框
            $('.mol-main').css('display','block');
            $('.black').css('display','block');

            // alert('黑棋获胜');
        }else{
            //显示白棋获胜框
            $('.mol-main').css('display','block');
            $('.white').css('display','block');

            // alert('白棋获胜');
        }
    }
}

引用

b站教程

Python+Tkinter五子棋开发实战:GUI编程与算法核心解析 Python GUI编程是初学者从语法迈向工程实践的关键一步,而Tkinter作为标准库自带的图形界面工具,凭借零依赖、上手快的特点,成为实现桌面小游戏的首选方案。本文基于二维数组建模棋盘状态,结合事件驱动机制处理鼠标交互,深入讲解五子棋落子、坐标换算、胜负判断等核心逻辑,并展示如何通过方向向量与边界检查高效判定“五连”组合。从技术价值看,这类小游戏覆盖列表操作、函数设计、界面布局等基础技能,同时为后续扩展AI对战、启发式搜索等高级主题打下坚实根基。在实际开发场景中,Python小游戏项目常被用作入门练手, 阅读详情

相关推荐

Java五子棋网络对战毕设实战:Socket通信与多线程机制解析

网络编程是Java开发者的核心技能之一,从基础Socket通信到多线程协作,每一步都影响系统稳定性。一个常见的Java课程设计——五子棋手机网络对战系统,恰好涵盖了这些关键技术:通过Swing绘制棋盘并处理鼠标事件,利用ServerSocket和ObjectOutputStream实现对象序列化传输,在多线程环境下安全地刷新界面与收发消息,并引入心跳检测机制处理断线重连。具体代码示例展示了如何构建一个可演示、可答辩的完整项目。该案例融合了Java集合、IO、网络与并发等基础知识,也涉及协议设计、状态同步等工

weixin_33507732的博客 245

对战五子棋——网页版

实现一个网页版的五子棋对战程序,用户可以进行注册,注册完成后登录进入游戏大厅,会显示用户的天梯分数记录以及比赛场次的记录,会根据用户的天梯分数实现匹配机制,实现两个玩家在网页端进行五子棋的对战。@Data@Data@Data// 胜利玩家的 userId。

m0_62404808的博客 5225

HTML5网页版五子棋小游戏.zip

HTML5网页版五子棋小游戏通过原生js和canvas实现五子棋小游戏,可以试下左右手互搏。

五子棋对战(网页版)

首先需要在数据库中创建一个新的表, 用来表示每个玩家的游戏房间编号,服务器把每一局对局, 玩家轮流落子的位置都记录下来(比如保存到一个文本文件中),然后玩家可以选定某个曾经的比赛, 在页面上回放出对局的过程.在游戏大厅除了显示匹配按钮之外, 还能显示当前所有的对局房间,玩家可以选中某个房间, 以观众的形式加入到房间中. 同时能实时的看到选手的对局情况.在处理落子响应中要处理胜负手.在 Matcher 的构造方法中, 创建一个线程, 使用该线程扫描每个队列, 把每个队列的头两个元素取出来, 匹配到一组中.

weixin_44985964的博客 3332

五子棋(网页版)

本游戏是使用纯javascript编写,代码100%原创,代码简洁,计算速率很快,希望大家给与评价、指点

五子棋ai人工智能(网页版)

五子棋AI算法原理,博弈树、极大极小值搜索算法、α-β剪枝算法

web 五子棋小游戏

本项目实现了一个经典的五子棋(Gomoku)游戏,玩家可以在14x14的棋盘上轮流落子,目标是成为第一个在任意方向(水平、竖直或对角线)连成五个同色棋子的人。该游戏使用了现代 JavaScript 和 HTML5 技术,确保了良好的用户体验和高效的逻辑处理。 主要功能

JiuMeilove的博客 816

set_data_check专题[使用,report_timing,setup/hold检查]

set_data_check用于约束『数据-对-数据』的『建立保持』时间检查,通常被称为非时序约束 ( non-sequential constraints ), 理论上set_data_check 可以设在任意的两个data pin 上,其中一个pin 称为 constrained pin 类似于寄存器的data pin, 另一个pin 称为related pin 类似于寄存器的clock pin.

cy413026的博客 1万+

网页小游戏-五子棋

设计思路如下: 1.先采用的Math.random()方法决定哪一方先行; 2.设置变量WFLAG = 1,BFLAG = 0时执白子,WFLAG = 0,BFLAG = 1时执黑子; 3.设置标志[I]中,当为白子时标志[I] = 1,当为黑子时标志[I] = 2,且标志[I]不为0时不能落子; 4.设置判断语句,当列5子时,竖5子,斜5子时为胜利,并计分; 5.重新开始 - 重新初始...

Cairo960918的博客 1118

用STM32的SPI接口读取MT6835磁编码器,手把手教你避开数据读取的坑

本文详细介绍了如何使用STM32的SPI接口读取MT6835磁编码器,并提供了21个实战细节与避坑指南。从硬件连接、SPI配置到数据解析和实时调试,全面解析了读取位置信息过程中的常见问题及解决方案,帮助工程师在工业控制、伺服电机等场景中高效应用AMR技术。

weixin_30729609的博客 1441

海康视觉脚本开发全流程解析

本文详细解析了海康机器视觉平台(VM)中脚本模块的开发全流程。从创建第一个脚本模块入手,深入讲解了输入参数、输出参数与内部变量的定义与区别,并提供了C#脚本编写、公用函数调用、代码结构组织以及编译调试的实用指南。旨在帮助开发者掌握海康视觉脚本开发的核心技巧,高效实现复杂的自定义视觉逻辑处理。

beer8的博客 602

经典小游戏

脚 本 之 家 www.jb51.net 脚本云 专题 素材下载 电子书 软件下载 源码下载 服务器常用软件 a5交易 网页制作 网络编程 脚本专栏 脚本下载 数据库 CMS教程 电子书籍 平面设计 媒体动画 操作系统 网站运营 网络安全 在线手册 JavaScript ASP.NET PHP编程 AJAX相关 正则表达式 ASP编程 JSP编程 编程100...

小屁孩大帅-保密的博客 807

ai获客系统功能代码

AI 获客系统是一个复杂的体系,以下为你提供一个简化的 Python 示例,聚焦于客户行为分析与销售线索筛选功能,模拟实现从多渠道收集数据后的初步处理流程。假设已有从官网、线上商城等渠道收集到的客户数据,以字典列表形式存储,每个字典包含客户基本信息及购买行为数据。通过分析客户购买频率与金额,筛选出高价值销售线索。python上述代码仅为基础示例,实际 AI 获客系统还涉及更复杂的数据采集、清洗、存储,以及运用机器学习算法进行深度客户洞察等功能。

weixin_ggwwsscc的博客 893

Web前端资源汇总

网页特效库  华山论剑HTML5特效 2017新年快乐特效 CSS3+jQuery实现时钟插件 Html5入门实例"Far away from home" jQuery网页版五子棋小游戏源码下载 一句jQuery代码返回顶部 HTML5知识初级题目 jquery仿搜狐投票动画代码 jQuery简洁大方的登录页面模板 HTML5模仿逼真

camille的专栏 1070

MTK Sensor驱动调试实战:从AP到SCP的完整流程解析

本文详细解析了MTK平台Sensor驱动从AP侧到SCP侧的完整调试流程。内容涵盖AP侧驱动集成、DTS配置、内核编译与验证,以及SCP侧Tinysys框架下的代码集成、Overlay配置与I2C设置等核心步骤,并分享了中断唤醒、功耗优化及传感器数据校准等实战经验与常见问题排查方法,为硬件驱动工程师提供了一份全面的实战指南。

weixin_29175469的博客 354

Win11此电脑怎么放在桌面上?Win11此电脑如何显示在电脑桌面上?

相信用习惯Win10的用户都喜欢电脑电脑桌面上的此电脑,但是很多用户更新完Win11正式版以后,发现桌面只有回收站和Microsoft Edge图标,没有此电脑。那么,Win11此电脑要如何显示呢?下面小编为大家简单介绍一下操作方法!5、桌面图标设置窗口,点击勾选计算机,然后点击确定,桌面就可以显示此电脑图标了。1、桌面空白处,点击右键,在打开的菜单项中,选择显示设置;4、个性化 - 主题,相关设置下,点击桌面图标设置;3、右侧点击主题(安装、创建、管理);2、设置窗口,左侧点击个性化;

shengyin714959的博客 13万+

基于python flask的网页五子棋实现,包括多种语言,可以悔棋、重新开始

这个基于 Flask 的五子棋游戏实现了一个简单而有趣的在线对战平台,支持多语言、悔棋和重新开始等功能。通过 Flask 提供的强大功能和前端交互,玩家可以方便地进行游戏,并享受一个流畅的五子棋体验。

weixin_49081159的博客 1496

PyTorch深度学习实战(29)——变分自编码器(Variational Autoencoder, VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。

盼小辉丶的博客 1万+

【Html5+Css+JavaScript】五子棋小游戏

摘要:这款UI设计精美的围棋游戏采用木纹棋盘风格,棋子具有阴影和渐变效果。具备完整的游戏功能,包括胜负判断、悔棋、实时状态显示等。提供流畅的动画效果,如落子过渡、胜利提示等。支持响应式设计,适配多种设备。附带游戏规则说明,方便新手快速上手。整体界面层次分明,操作体验流畅。

初尘屿风的博客 193

YOLOv11改进 | 损失函数改进篇 | 2024最新高质量的目标检测边界框回归损失Unified-IoU、FocalUIoU、FocalInvUIoU(设置动态epoch参数)

本文给大家带来的改进机制是最近新提出的高质量的目标检测边界框回归损失,其通过动态调整模型对不同质量预测框的关注,优化目标检测中的边界框回归精度。UIoU引入了FocalBox方法,通过缩放预测框与真实框分配权重,并采用了退火策略(引入动态参数epoch),逐渐将模型的注意力从低质量预测框转移到高质量预测框,平衡了训练速度与检测精度。其还有一定的解决样本不平衡问题,同时该损失函数可以和现有的任何边界框回归损失函数进行结合,例如ShapeIoU和其结合可以形成二次创新,它是一种类似于之前的Inner的机制.

Snu77的博客 4586

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

测评几个本地代码模型:零一万物、千问、deepseek、llama

测评几个本地代码模型:零一万物、千问、deepseek、llama

逐梦苍穹的博客 2913

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: web前端之跳一跳网页版小游戏
下一篇: python之迷宫小游戏
Zella Zhang
博客等级 码龄8年 79粉丝 176原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值