当前位置:首页 > JavaScript

js实现棋盘

2026-03-02 07:18:58JavaScript

使用HTML和JavaScript创建棋盘

在JavaScript中创建一个棋盘可以通过HTML的<canvas>元素或DOM操作实现。以下是两种常见方法:

js实现棋盘

方法1:使用Canvas绘制棋盘

<!DOCTYPE html>
<html>
<head>
    <title>Canvas Chessboard</title>
    <style>
        canvas {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <canvas id="chessboard" width="400" height="400"></canvas>
    <script>
        const canvas = document.getElementById('chessboard');
        const ctx = canvas.getContext('2d');
        const size = 8; // 8x8棋盘
        const squareSize = canvas.width / size;

        for (let i = 0; i < size; i++) {
            for (let j = 0; j < size; j++) {
                ctx.fillStyle = (i + j) % 2 === 0 ? 'white' : 'black';
                ctx.fillRect(j * squareSize, i * squareSize, squareSize, squareSize);
            }
        }
    </script>
</body>
</html>

方法2:使用DOM创建棋盘

<!DOCTYPE html>
<html>
<head>
    <title>DOM Chessboard</title>
    <style>
        .chessboard {
            display: grid;
            grid-template-columns: repeat(8, 50px);
            grid-template-rows: repeat(8, 50px);
            width: 400px;
            height: 400px;
            border: 1px solid black;
        }
        .square {
            width: 50px;
            height: 50px;
        }
        .white {
            background-color: white;
        }
        .black {
            background-color: black;
        }
    </style>
</head>
<body>
    <div id="chessboard" class="chessboard"></div>
    <script>
        const chessboard = document.getElementById('chessboard');
        const size = 8;

        for (let i = 0; i < size; i++) {
            for (let j = 0; j < size; j++) {
                const square = document.createElement('div');
                square.className = `square ${(i + j) % 2 === 0 ? 'white' : 'black'}`;
                chessboard.appendChild(square);
            }
        }
    </script>
</body>
</html>

添加交互功能

可以为棋盘添加点击事件,实现棋子放置或移动功能:

js实现棋盘

// 在Canvas版本中添加点击事件
canvas.addEventListener('click', (event) => {
    const rect = canvas.getBoundingClientRect();
    const x = event.clientX - rect.left;
    const y = event.clientY - rect.top;
    const col = Math.floor(x / squareSize);
    const row = Math.floor(y / squareSize);

    // 绘制棋子
    ctx.beginPath();
    ctx.arc(col * squareSize + squareSize/2, row * squareSize + squareSize/2, squareSize/3, 0, Math.PI * 2);
    ctx.fillStyle = (row + col) % 2 === 0 ? 'red' : 'blue';
    ctx.fill();
});

使用第三方库

对于更复杂的棋盘游戏,可以考虑使用专门的库:

  1. Chess.js:处理棋类游戏规则
  2. chessboard.js:创建交互式棋盘界面

示例使用chessboard.js:

<!DOCTYPE html>
<html>
<head>
    <title>Chessboard.js Demo</title>
    <link rel="stylesheet" href="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.css">
    <script src="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.js"></script>
</head>
<body>
    <div id="board" style="width: 400px"></div>
    <script>
        const board = Chessboard('board', {
            position: 'start',
            draggable: true
        });
    </script>
</body>
</html>

这些方法提供了从简单到复杂的棋盘实现方式,可以根据项目需求选择合适的方法。

标签: 棋盘js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promis…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: funct…