漢字戰爭 Hanzi-Battle V1.0
以字為兵 · 以文為甲 · 以義為戰
一款基於漢字部首屬性的卡牌亂鬥遊戲。從通用規範漢字表(8105字)中精選200字作為卡池,每個漢字根據其部首擁有獨特的武器造型、屬性和技能,配以《說文解字》字源本義。
- 抽卡 — 從200字卡池中隨機抽取10張(簡體顯示卡面),可換牌
- 出征 — 選取出戰的字(點擊取消/選中),投入戰場
- 亂鬥 — 20個漢字在 Canvas 戰場上自由混戰,每字帶有部首對應的武器造型
- 勝負 — 最後存活方獲勝
| 部首 | 武器 | 元素 | 風格 | 字數 |
|---|---|---|---|---|
| 戈 | 戈矛 | 金 | 近戰突擊 | 8 |
| 刀/刂 | 刀劍 | 金 | 斬擊 | 8 |
| 斤 | 斧鉞 | 金 | 重擊 | 6 |
| 金 | 金戈 | 金 | 銳器 | 8 |
| 木 | 木盾 | 木 | 防禦 | 8 |
| 石 | 石錘 | 土 | 重擊 | 8 |
| 竹 | 弓弩 | 木 | 遠程 | 8 |
| 火 | 火焰 | 火 | 爆發 | 8 |
| 水/氵 | 水流 | 水 | 治癒 | 8 |
| 土 | 土牆 | 土 | 坦克 | 8 |
| 口 | 號令 | 中立 | 輔助 | 8 |
| 心/忄 | 意念 | 中立 | 精神 | 8 |
| 糸 | 繩索 | 中立 | 控制 | 8 |
| 虫 | 毒蟲 | 毒 | 持續傷害 | 8 |
| 鳥 | 飛禽 | 中立 | 速度 | 8 |
| 馬 | 騎兵 | 中立 | 衝鋒 | 8 |
| 辶/足 | 行軍 | 中立 | 閃避 | 8 |
| 扌 | 拳掌 | 中立 | 徒手 | 8 |
| 虎/豸 | 猛獸 | 中立 | 獸性 | 4 |
| 車 | 戰車 | 金 | 碾壓 | 8 |
| 雨/冫 | 冰霜 | 水 | 範圍控制 | 8 |
| 龍 | 神龍 | 中立 | 神話 | 1 |
| 弓 | 弓矢 | 木 | 射擊 | 5 |
| 力 | 力量 | 中立 | 蠻力 | 6 |
| 女 | 女將 | 中立 | 輔助 | 6 |
| 尸 | 屍術 | 中立 | 控制 | 5 |
| 广 | 殿堂 | 中立 | 坦克 | 5 |
| 衣 | 衣甲 | 中立 | 防禦 | 5 |
| 门 | 城門 | 中立 | 坦克 | 5 |
共 29 個部首類型,200 個漢字。
每個漢字在戰場上帶有部首對應的武器造型(Canvas 繪製):
- 戈部 → 斜伸出的戈矛(帶矛頭)
- 刀部 → 竖立刀劍(帶護手+刃光)
- 木部 → 半圓木盾(帶木紋)
- 火部 → 跳動的三色火舌
- 水部 → 流動的波浪線
- 竹部 → 弧弓+弦+箭
- 糸部 → 波浪繩索
- 鳥部 → 展開的翅膀弧線
- 車部 → 轉動的車輪+輻條
- 龍部 → 環形龍鱗
- 冰霜 → 六角冰晶
- 共 29 種武器造型
HP 低於 50% 時字出現龜裂效果,死亡時碎裂散落。
火 → 克 糸/竹/冰(燒斷繩索、引燃弓箭、融化冰霜)
水 → 克 火/石/土(熄滅、侵蝕、沖刷)
金 → 克 木/蟲(金克木、金屬抗毒)
木 → 克 土/水(樹根破土、吸收水分)
土 → 克 水/火(土擋水、土滅火)
克制方傷害 +25%,被克制方傷害 -20%。
| 屬性 | 範圍 | 說明 |
|---|---|---|
| 武力 ATK | 1-10 | 攻擊傷害 |
| 防禦 DEF | 1-10 | 減免傷害 |
| 速度 SPD | 1-5 | 移動速度 |
| 生命 HP | 4-12 | 存活值 |
傷害 = max(1, ATK - DEF + 元素修正)
| 技能 | 效果 | 觸發 |
|---|---|---|
| 先鋒突擊 | ATK+3 | 首次攻擊 |
| 固若金湯 | DEF+2 | 被攻擊時 |
| 蛇毒 | 每輪HP-1,持續2輪 | 命中時 |
| 破防 | 無視一半DEF | 攻擊時 |
| 連擊 | 攻擊兩次 | 攻擊時 |
| 狂戰 | HP↓ATK↑ | 被動 |
| 疾風 | SPD拉滿 | 被動 |
| 祝福 | 全屬性+1 | 被動 |
| 冰封 | 凍結對方1輪 | 命中時 |
| 雷擊 | 無視DEF傷3 | 首次攻擊 |
| 吸血 | 傷害30%回HP | 攻擊時 |
| 閃避 | 30%機率MISS | 被動 |
| 吞噬 | 擊殺回滿HP | 擊殺時 |
| 碾壓 | ATK>DEF時傷害×2 | 攻擊時 |
| 震懾 | 30%機率暈眩 | 命中時 |
| 反擊 | 受傷時反擊 | 被攻擊時 |
| 護甲 | 減傷2 | 被攻擊時 |
| 暴怒 | 被擊ATK+1(可疊加) | 被攻擊時 |
| 號令 | 友方ATK+1 | 首次攻擊 |
| 嘯叫 | 敵方ATK-2 | 首次攻擊 |
| 烈焰 | 火傷+3 | 攻擊時 |
| 潮汐 | 全隊HP+1 | 每回合 |
| 根纏 | 束縛降SPD | 命中時 |
| 地震 | 群體傷2 | 首次攻擊 |
| 品質 | 顏色 | 數量 |
|---|---|---|
| N | 灰色 | 4 |
| R | 綠色 | 136 |
| SR | 藍色 | 54 |
| SSR | 金色 | 6 |
每張卡顯示:
- 繁體大字 — 戰鬥時的角色
- 說文解字本義 — 字源解釋(原文+白話)
- 四項屬性 — ATK/DEF/SPD/HP
- 特殊技能 — 技能名+效果
- 元素標識 — 金/木/水/火/土/毒/中立
- 武器名 — 部首對應的武器
- 簡體對照 — 抽卡時的識別字
- 分組展示:29個部首分組,每組有標題+元素標識
- 標籤篩選:頂部標籤欄,點擊切換分組或查看全部
- 點擊放大:彈出完整卡面(說文原文、技能詳情等)
- 開戰公告「開戰!」閃現後 0.5 秒開始戰鬥
- 每 1.5 秒為一輪(回合制)
- 字隨機選擇敵方目標(不全擠一個)
- 攻擊時停在射程距離(不疊在一起)
- 約 15-25 輪結束一局
- 純 HTML/CSS/JS,無框架依賴
- Canvas 2D 渲染戰場(武器造型+特效)
- CSS 動畫卡牌效果
- 雙循環架構:setInterval 驅動遊戲邏輯 + requestAnimationFrame 驅動渲染
- Google Fonts(Noto Serif SC + Ma Shan Zheng,非阻塞加載)
cd Hanzi-Battle
bash start.sh
# 或手動啟動:
python3 -m http.server 8765
# 瀏覽器打開 http://localhost:8765Hanzi-Battle/
├── index.html # 入口(5個界面:菜單/抽卡/戰場/結算/圖鑑)
├── start.sh # 一鍵啟動腳本
├── README.md
├── css/
│ └── style.css # 青銅甲骨風格(~16KB)
├── js/
│ ├── characters.js # 200字數據 + 武器/技能/元素配置(~17KB)
│ ├── shuowen.js # 說文解字原文+白話本義(~21KB)
│ ├── battle.js # 戰場引擎:武器造型繪製+碰撞+傷害(~29KB)
│ ├── draw.js # 抽卡系統
│ ├── ui.js # 界面渲染:卡牌+圖鑑+彈窗(~9KB)
│ └── app.js # 主控制器
└── assets/ # 預留資源目錄
- 字表 — 通用規範漢字表(2013年版,8105字,一級+二級混合)
- 字源 — 《說文解字》原文 + 白話本義
- 簡繁 — 指定首選繁體,避開一對多歧義
本項目僅供學習和娛樂使用。