#card-game #card #poker #game

rummy

一款卡牌游戏鲁米的软件包

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游戏

MIT 协议

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