5个版本
0.1.4 | 2024年7月7日 |
---|---|
0.1.3 | 2024年6月30日 |
0.1.2 | 2024年6月30日 |
0.1.1 | 2024年6月18日 |
0.1.0 | 2024年6月18日 |
#101 在 游戏
94KB
2.5K SLoC
rummy
该软件包模拟卡牌游戏鲁米。它支持配置和不同的流行变体(进行中)。
注意:此软件包处于早期开发阶段;不要期望任何东西保持稳定。
使用
模块
此软件包的典型导入方式如下
use rummy::game::{
actions::{
AllActions, DiscardActions, DrawActions, PlayActions, PlayableActions, RoundEndActions,
TransitionResult,
},
phases::{DiscardPhase, DrawPhase, GamePhase, PlayPhase, PlayablePhase, RoundEndPhase},
state::{Score, State},
variants::standard::{StandardRummy, StandardRummyGame},
};
模块分解
- actions:将鲁米游戏每个阶段的可能动作拆分的特质。
- phases:鲁米游戏的不同阶段;用作游戏类型状态的状态。
- state:鲁米游戏的状态,适用于所有变体。
- variants:游戏本身;包含鲁米的各种变体。
开始游戏
// initialize a list of player IDs
let player_ids = vec![1, 2, 3, 4];
// pass it into a variant's `quickstart`
let game = StandardRummyGame::quickstart(player_ids);
// we initialize at round 0 in `RoundEndPhase`, so we must advance to the next round
let game = game.to_next_round();
或者,您可以通过设置配置来配置游戏
// the config struct for standard Rummy
let game_config = StandardRummyConfig { /* ... */ };
// and for the deck itself
let deck_config = DeckConfig { /* ... */ };
// we pass both into the variant's `new`
let game = StandardRummyGame::quickstart(player_ids, game_config, deck_config);
转换
某些动作,如组成花色,可能导致立即转换为不同的游戏阶段。调用这些函数将消耗游戏并返回TransitionResult
。
进行中
示例
使用cargo run --examples rummy
来运行该软件包的命令行实现。
依赖项
~0.6–1.3MB
~28K SLoC