Skip to content
starhaotianPublic

About

Paws & Pawns

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Paws & Pawns 🐾 · 百兽王国象棋

Paws & Pawns: Kingdom of Beasts —— 一款卡通动物风格的国际象棋网页游戏。 完全遵循国际象棋规则,动物棋子替代传统棋子,悬浮说明卡帮新手边玩边学, 提供 幼兽 / 游侠 / 狮王长老 三档难度与四档让子。

玩法特色

  • 动物即棋子:狮子=王、母狮=后、大象=车、猫头鹰=象、袋鼠=马、小鸡=兵。
  • 悬浮说明卡(教学核心):把鼠标悬到任意棋子上,即会显示它对应哪个标准棋子、 怎么走、以及特殊本领(如小鸡到底线可“长大”成任意大动物)。
  • 三档难度:
    • 🐾 幼兽(Cub)—— 浅搜索 + 较高失误率(按开局/中局/残局递减),适合新手。
    • 🏹 游侠(Ranger)—— 中等搜索 + 开局库 + 少量失误。
    • 👑 狮王长老(Elder Lion)—— 更深搜索 + 完整开局库 + 零失误。
  • 让子对局:公平 / 让一兵 / 让一马象 / 让一车,缩小与高难度的差距。
  • 双阵营:草原族(暖金,执白先手)与苔原族(冷蓝,执黑后手)。
  • 完整对局体验:棋谱记录、战利品与子力优势、悔棋、提示、翻转棋盘、认输、 升变选择、将军提醒、结算页,进度自动存入 localStorage。

技术栈

  • 构建:Vite 5 + React 18 + TypeScript(strict)
  • 规则引擎:chess.js 作为合法性的唯一裁判
  • AI:纯 JS 实现的 Negamax + Alpha-Beta 剪枝 + 静态搜索(quiescence), 运行在 Web Worker 中避免阻塞 UI;带 确定性失误注入(以局面哈希做种, 悔棋不会重掷失误骰子)与 安全阀(不自寻将死、不白送车/后)。
  • 状态:zustand
  • 样式:原生 CSS 变量 + CSS 过渡(无 UI 框架依赖)
  • 美术:矢量 SVG(渐变高光营造轻度立体感),阵营配色可实时切换

关于 AI 引擎的设计取舍

设计文档最初讨论过接入 Stockfish WASM。实际实现选择了 纯 JS Minimax,原因是: 零外部资源依赖、部署可靠、包体小、易于内建“可控失误”的教学型难度曲线。 狮王长老档的搜索深度受浏览器实时性约束,封顶在可秒级返回的深度, 强度定位为“稳健的业余对手”,而非引擎级。

本地运行

npm install
npm run dev       # 开发服务器
npm run build     # 类型检查 + 生产构建到 dist/
npm run preview   # 预览生产构建(http://localhost:4173)

目录结构

src/
  data/        棋子映射、难度配置、让子 FEN、文案库
  engine/      评估函数、搜索、开局库、AI Worker 与主线程客户端
  store/       zustand 游戏状态(以 chess.js 为单一数据源)
  components/  棋盘、动物 SVG、说明卡、升变弹窗
  screens/     主菜单 / 对局 / 结算

设计方案见仓库外的 DESIGN.md(本作依据其 v1.3 实现)。

About

Paws & Pawns

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages