使用前端开发五子棋小游戏

下面一个完整实现的五子棋游戏代码,包含了 HTML、CSS 和 JavaScript 部分,并加入了一些优化和注释:

HTML

<!DOCTYPE html>
<html>
<head>
    <title>五子棋游戏</title>
    <style>
        /* CSS样式 */
        #gobang {
            border-collapse: collapse;
            margin: 0 auto;
        }
        td {
            width: 30px;
            height: 30px;
            border: 1px solid black;
            text-align: center;
            cursor: pointer;
        }
        .black {
            background-color: black;
        }
        .white {
            background-color: white;
        }
    </style>
</head>
<body>
    <table id="gobang"></table>
    <script>
        // JavaScript代码
        const gobang = document.getElementById('gobang');
        const size = 15;
        let chessboard = [];
        let currentPlayer = 'black';

        // 初始化棋盘
        function initChessboard() {
            for (let i = 0; i < size; i++) {
                chessboard[i] = new Array(size).fill(0);
                let row = gobang.insertRow();
                for (let j = 0; j < size; j++) {
                    let cell = row.insertCell();
                    cell.addEventListener('click', () => {
                        if (chessboard[i][j] === 0) {
                            chessboard[i][j] = currentPlayer === 'black' ? 1 : 2;
                            cell.classList.add(currentPlayer);
                            if (checkWin(i, j)) {
                                alert(currentPlayer + '获胜!');
                            }
                            currentPlayer = currentPlayer === 'black' ? 'white' : 'black';
                        }
                    });
                }
            }
        }

        // 判断胜负
        function checkWin(x, y) {
            const directions = [[1, 0], [0, 1], [1, 1], [1, -1]]; // 检查方向
            for (const [dx, dy] of directions) {
                let count = 1;
                // 检查当前方向上连续的棋子数量
                for (let i = 1; i < 5; i++) {
                    if (x + i * dx < size && y + i * dy < size &&
                        chessboard[x + i * dx][y + i * dy] === chessboard[x][y]) {
                        count++;
                    } else {
                        break;
                    }
                }
                for (let i = 1; i < 5; i++) {
                    if (x - i * dx >= 0 && y - i * dy >= 0 &&
                        chessboard[x - i * dx][y - i * dy] === chessboard[x][y]) {
                        count++;
                    } else {
                        break;
                    }
                }
                if (count >= 5) {
                    return true;
                }
            }
            return false;
        }

        initChessboard();
    </script>
</body>
</html>

代码解释如下:

  • HTML 结构: 创建了一个表格作为棋盘,每个单元格代表一个落子位置。
  • CSS 样式: 设置棋盘和棋子的样式,包括边框、大小、颜色等。
  • JavaScript 逻辑:
    • 初始化棋盘: 创建一个二维数组表示棋盘状态,并为每个单元格添加点击事件。
    • 落子: 点击空格子时,在对应位置放置棋子,并判断是否获胜。
    • 胜负判断: 检查当前落子位置的横向、纵向、两个对角线方向上是否有连续五个相同棋子。
    • 轮流下棋: 每次落子后切换玩家。

上述代码可以进一步改进:

  • AI对弈: 可以引入 Minimax 算法或蒙特卡洛树搜索等算法实现 AI 对弈。
  • 悔棋功能: 记录下棋步骤,实现悔棋功能。
  • 禁手规则: 实现五子棋的禁手规则。
  • 游戏界面优化: 可以添加背景音乐、音效、更美观的棋子样式等。
  • 多人对战: 可以通过 WebSocket 或其他技术实现多人在线对战。

使用方式:

  1. 将代码保存为 HTML 文件(例如 index.html)。
  2. 在浏览器中打开该文件。

注意事项:

  • 浏览器兼容性: 确保你的浏览器支持 HTML5 和 JavaScript。
  • 代码调整: 你可以根据自己的需求对代码进行调整,例如修改棋盘大小、棋子样式等。

如果想了游戏开发的知识,可以参考以下资源:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值