js+css实现带音效中国象棋多人对战人机对战代码

代码语言:html

所属分类:游戏

代码描述:js+css实现带音效中国象棋多人对战人机对战代码

代码标签: js css 音效 中国 象棋 多人 对战 人机 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>中国象棋</title>
    <style>
        :root {
            /* --- Board & General --- */
            --board-bg: #f5e4c3;
            --line-color: #8b5e34;
            --panel-bg: #ffffff;
            --text-color: #212529;
            --muted-text-color: #6c757d;
            --border-radius: 8px;
            --shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
            
            /* --- Pieces (NEW & IMPROVED) --- */
            /* Red Piece */
            --red-piece-bg: radial-gradient(circle at 50% 40%, #e74c3c, #c0392b);
            --red-piece-text: #fdebd0;
            --red-piece-border: #943126;
            --red-piece-text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
            --red-piece-shadow: 3px 3px 7px rgba(0, 0, 0, 0.4);
            --red-piece-highlight: inset 0 3px 3px rgba(255, 255, 255, 0.3);

            /* Black Piece */
            --black-piece-bg: radial-gradient(circle at 50% 40%, #566573, #2c3e50);
            --black-piece-text: #fdebd0;
            --black-piece-border: #212f3d;
            --black-piece-text-shadow: 1px 1px 2px rgba(0,0,0,0.7);
            --black-piece-shadow: 3px 3px 7px rgba(0, 0, 0, 0.4);
            --black-piece-highlight: inset 0 3px 3px rgba(255, 255, 255, 0.2);

            /* --- Indicators --- */
            --selected-glow: 0 0 15px rgba(255, 215, 0, 0.9);
            --last-move-color: rgba(25, 135, 84, 0.5);
            --possible-move-color: rgba(25, 135, 84, 0.3);
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            margin: 0;
            padding: 20px;
            box-sizing: border-box;
            color: var(--text-color);
        }

        .game-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            align-items: flex-start;
            gap: 30px;
        }

        .board-wrapper {
            position: relative;
            width: 540px;
            height: 600px;
            background-color: var(--board-bg);
            border: 2px solid var(--line-color);
            box-shadow: var(--shadow);
            border-radius: var(--border-radius);
        }

        .board {
            display: grid;
            grid-template-columns: repeat(9, 60px);
            grid-template-rows: repeat(10, 60px);
        }

        .square {
            width: 60px;
            height: 60px;
            position: relative;
        }

        /* 绘制棋盘线 */
        .square::before, .square::after {
            content: '';
            position: absolute;
            background-color: var(--line-color);
            z-index: 1;
        }
        .square::before { width: 100%; height: 2px; top: 50%; left: 0; transform: translateY(-50%); }
        .square::after { height: 100%; width: 2px; left: 50%; top: 0; transform: translateX(-50%); }
        
        /* 边缘线处理 */
        .row-0 .square::after { height: 50%; top: 50%; }
        .row-9 .square::after { height: 50%; top: 0; }
        .col-0 .square::before { width: 50%; left: 50%; }
        .col-8 .square::before { width: 50%; left: 0; }
        .row-0.col-0 .square::before, .row-0.col-8 .square::before, .row-9.col-0 .square::before, .row-9.col-8 .square::before { width: 0; }
        .row-0.col-0 .square::after, .row-0.col-8 .square::after, .row-9.col-0 .square::after, .row-9.col-8 .square::after { height: 0; }

        /* 绘制九宫格斜线 */
        .palace-line {
            position: absolute;
            width: 170px;
            height: 2px;
            background-color: var(--line-color);
            z-index: 1;
        }
       /* 绘制九宫格斜线 (已修正) */
        .palace-line {
            position: absolute;
            width: 170px; /* sqrt(120*120 + 120*120) ≈ 169.7px */
            height: 2px;
            background-color: var(--line-color);
            transform-origin: center center; /* 确保围绕中心旋转 */
            z-index: 1;
        }
        #palace-top-1 {    top: 87px;
    left: 184px; transform: rotate(45deg); }
        #palace-top-2 { top: 88px;
    left: 187px; transform: rotate(-45deg); }
        #palace-bottom-1 {    bottom: 88px;
    left: 184px; transform: rotate(-45deg); }
        #palace-bottom-2 { bottom: 88px;
    left: 186px; transform: rotate(45deg); }

        /* 楚河汉界 */
        .river {
            background-color: var(--board-bg);
            position: absolute;
            top: 270px;
            left: 0;
            width: 100%;
            height: 60px;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 28px;
            letter-spacing: 2em;
            color: var(--line-color);
            z-index: 2;
        }
        .row-4 .square::after, .row-5 .square::after { height: 0; }
        
        /* --- [CLEANED UP] 炮/兵位置标记 --- */
        .marker-point .marker-corner {
            position: absolute;
            width: 8px;
            height: 8px;
            z-index: 1;
        }
        .marker-corner.top-left     { top: 0; left: 0; }
        .marker-corner.top-right    { top: 0; right: 0; }
        .marker-corner.bottom-left  { bottom: 0; left: 0; }
        .marker-corner.bottom-right { bottom: 0; right: 0; }
        .marker-point .marker-corner::before,
        .marker-point .marker-corner::after {
            content: '';
            position: absolute;
            background-color: var(--line-color);
        }
        .marker-corner.top-left::before   { width: 2px; height: 100%; top: -100%; left: -1px; }
        .marker-corner.top-left::after    { height: 2px; width: 100%; top: -1px; left: -100%; }
        .marker-corner.top-right::before  { width: 2px; height: 100%; top: -100%; right: -1px; }
        .marker-corner.top-right::after   { height: 2px; width: 100%; top: -1px; right: -100%; }
        .marker-corner.bottom-left::before{ width: 2px; height: 100%; bottom: -100%; left: -1px; }
        .marker-corner.bottom-left::after { height: 2px; width: 100%; bottom: -1px; left: -100%; }
        .marker-corner.bottom-right::before{ width: 2px; height: 100%; bottom: -100%; right: -1px; }
        .marker-corner.bottom-right::after{ height: 2px; width.........完整代码请登录后点击上方下载按钮下载查看

网友评论0