4 个版本

0.9.4 2020年4月4日
0.9.2 2018年3月16日
0.9.1 2017年8月22日
0.9.0 2017年6月29日

#431游戏

GPL-3.0+

520KB
2K SLoC

Marmoset — 许可: GPLv3

Marmoset 是一款单人实现的卡牌游戏 SET®。它使用 GTK+ 3 并用 Rust 编写。

除了经典的 SET® 规则外,Marmoset 还提供另一种名为 SuperSet 的游戏变体,它使用相同的牌组。其他功能包括初学者牌组(仅包含实心卡片)、撤销和重做、提示以及旨在供色觉缺陷人士玩耍的颜色调板。

请参阅 快速入门 了解游戏规则。

Marmoset Gameplay

构建

检出代码并运行 cargo build --release

桌面文件和图标

要在 Linux 上安装 Marmoset 的桌面入口,编辑 org.nybble.marmoset.desktop,以便 Icon=~/marmoset/icon.svg 条目反映了您系统上 icon.svg 的实际路径,然后

cp org.nybble.marmoset.desktop~/.local/share/applications

确保可执行文件 target/release/marmoset 在您的 $PATH 中的某个位置。

示例

除了 Marmoset 应用程序外,还有三个使用相同底层库的命令行程序。这些程序被编写来回答有关 Set 和 SuperSet 游戏的问题,并生成文档中的卡片图像。

count

count 程序生成所有可能的发牌方式,以确定包含 SuperSet 的最小手牌。结论是,任何 10 张牌的发牌都会至少包含一个 SuperSet。这个结果为 Marmoset 中的 SuperSet 变体的布局和行为提供了信息。

使用 countcargo run --release --example count -- [OPTIONS] 运行。

USAGE:
	count [OPTIONS]

FLAGS:
	-h, --help       Prints help information
	-V, --version    Prints version information

OPTIONS:
	-t, --threads <THREADS>    Sets number of threads

模拟

simulate 程序使用经典的 SET® 规则来模拟游戏。它计算没有 Sets 的手牌数量以及游戏结束时剩余的卡片数量。这个程序被用来确定游戏陷入 18 张牌的局面有多常见。由于这种情况极为罕见(大约每 1.6 百万次游戏中出现一次),Marmoset 始终保证 18 张牌的牌局中至少包含 1 张 Set。这意味着我们只需要在桌面上有 18 个牌位而不是 21 个。

使用 cargo run --release --example simulate -- [OPTIONS] 运行 simulate

USAGE:
	simulate [OPTIONS]

FLAGS:
	-h, --help       Prints help information
	-V, --version    Prints version information

OPTIONS:
	-g, --games <GAMES>        Sets number of games to simulate (default: 1_000_000)
	-t, --threads <THREADS>    Sets number of threads

genpng

genpng 程序为 Marmoset 牌组中的每张牌生成一个 PNG 图像。

使用 cargo run --release --example genpng -- [FLAGS] [OPTIONS] <DIRECTORY> 运行 genpng

USAGE:
	genpng [FLAGS] [OPTIONS] <DIRECTORY>

FLAGS:
	-c, --classic-colors       Uses classic SET colors
	-v, --render-vertically    Orients cards vertically
	-h, --help                 Prints help information
	-V, --version              Prints version information

OPTIONS:
	-b, --border <BORDER>    Sets the border width in pixels
	-w, --width <WIDTH>      Sets the card width in pixels

ARGS:
	<DIRECTORY>    Sets the directory in which to place the images

许可证

Marmoset 根据 GNU 通用公共许可证 v3 发布。

依赖项

~21MB
~466K SLoC