ElnurBDa/blackguard

GitHub: ElnurBDa/blackguard

Blackguard 是经典单人 Roguelike 卡牌游戏 Scoundrel 的终端实现,使用 Rust 和 ratatui 构建,提供精美的界面与完整的游戏规则。

Stars: 3 | Forks: 0

# Blackguard **[Scoundrel](http://stfj.net/art/2011/Scoundrel.pdf)** 的精美终端实现版本 —— 这是由 Zach Gage 和 Kurt Bieg 开发的单人 rogue­like 卡牌游戏,使用 Rust 和 [ratatui](https://ratatui.rs) 构建。 牌堆*即是*地牢。与怪物战斗,挥舞会损耗的武器,啜饮药水,并努力存活到最后一张牌。(*Blackguard* 是“scoundrel”(无赖)的古语 —— 同时也隐喻了你将与之战斗的黑桃花色 ♠♣ 怪物。) ![Blackguard — 运行在终端中的 Scoundrel 游戏](https://static.pigsec.cn/wp-content/uploads/repos/cas/a5/a53abb9d62054113d266b187afb3704747943330d28414ca0e6583e778d701ab.png) ## 安装 ``` # Rust 用户 cargo install blackguard # Nix(无需安装 — 直接运行) nix run github:ElnurBDa/blackguard # 或者从 Releases 页面获取适用于你操作系统的预编译二进制文件 # (Linux 上为 static musl,macOS Intel/ARM,Windows .exe) ``` ## 游玩 ``` blackguard # random dungeon blackguard --seed 42 # reproducible dungeon blackguard --daily # everyone's dungeon-of-the-day blackguard --rule equal # alternate weapon-binding rule ``` ### 控制 | 按键 | 操作 | | --- | --- | | `←` / `→` (或 `h` / `l`) | 选择一张牌 | | `Enter` / `Space` | 使用选中的牌(智能操作:战斗 / 装备 / 饮用) | | `f` | **用你的利刃**与选中的怪物战斗 | | `b` | **赤手空拳**与选中的怪物战斗 | | `a` | 搁置房间(将其置于牌堆底部) | | `n` / `r` | 开始新游戏 / 使用相同的随机种子重试 | | `t` | 翻转武器规则并重玩同一副牌 | | `?` | 帮助 · `q` 退出 | ## 规则简介 - **44 张牌的牌堆** —— 标准牌堆减去红色的花牌(J、Q、K)和红色的 A。 - **♠♣ 怪物** 会消耗你等于其点数(2–14)的 HP。 - **♦ 武器** 会根据其点数减少怪物的伤害 —— 但它们会**损耗**:一旦某把武器击杀了一只怪物,之后它就只能用于对付**更弱**的怪物。 - **♥ 药水** 会根据其点数恢复 HP;但每个房间内只有**第一瓶**药水有效。 - 每个房间会发 **4 张牌**;打出 **3 张**,第 4 张会带入下一个房间。 - **搁置** 房间会将其放入牌堆底部 —— 但不能连续搁置两次。 - 清空整个牌堆即可**获胜**(得分 = 剩余 HP);HP 降至 **0** 则死亡(得分 = 你未能面对的怪物点数的负值总和)。 ## 从源码构建 无需系统级的 Rust —— 工具链由 Nix 提供: ``` nix develop # or: nix-shell cargo run cargo test cargo clippy --all-targets -- -D warnings ``` 架构:在 [`src/core/`](src/core/) 中包含一个纯粹的、经过完整单元测试的规则引擎(无 I/O,基于随机种子进行确定性运算),并由 ratatui 前端封装([`src/app.rs`](src/app.rs) 负责更新,[`src/ui/`](src/ui/) 负责视图,[`src/tui.rs`](src/tui.rs) 负责终端循环)。 ## 致谢 - **Scoundrel** 由 **Zach Gage** 和 **Kurt Bieg**(2011)设计 —— [规则 PDF](http://stfj.net/art/2011/Scoundrel.pdf)。本项目是一个独立的粉丝实现版本,与设计者无关。 - 在构建此项目时,另外两个终端实现版本是极好的参考,也非常值得一看: - [`adrior11/scoundrel-tui`](https://github.com/adrior11/scoundrel-tui) —— 一个 Rust + ratatui 版本。 - [`comradevanti-games/scoundrel_for_terminal`](https://github.com/comradevanti-games/scoundrel_for_terminal) —— 一个 Rust + termion 版本,具有清晰的领域/UI 分离。 ## 许可证 MIT © 2026 —— 详见 [LICENSE](LICENSE)。
标签:roguelike, Rust, 卡牌游戏, 可视化界面, 命令行应用, 游戏, 网络流量审计, 通知系统