Skip to content

wainshine/Hanzi-Battle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

漢字戰爭

漢字戰爭 Hanzi-Battle V1.0

以字為兵 · 以文為甲 · 以義為戰

一款基於漢字部首屬性的卡牌亂鬥遊戲。從通用規範漢字表(8105字)中精選200字作為卡池,每個漢字根據其部首擁有獨特的武器造型、屬性和技能,配以《說文解字》字源本義。

玩法

  1. 抽卡 — 從200字卡池中隨機抽取10張(簡體顯示卡面),可換牌
  2. 出征 — 選取出戰的字(點擊取消/選中),投入戰場
  3. 亂鬥 — 20個漢字在 Canvas 戰場上自由混戰,每字帶有部首對應的武器造型
  4. 勝負 — 最後存活方獲勝

核心系統

部首 → 武器 → 元素(29組)

部首 武器 元素 風格 字數
戈矛 近戰突擊 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 + 元素修正)

技能系統(25種)

技能 效果 觸發
先鋒突擊 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:8765

文件結構

Hanzi-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字,一級+二級混合)
  • 字源 — 《說文解字》原文 + 白話本義
  • 簡繁 — 指定首選繁體,避開一對多歧義

授權

本項目僅供學習和娛樂使用。

About

汉字战争。一个‌Vibe Coding出来的产品。

Resources

License

Stars

Watchers

Forks

Contributors