andy5995 / zigdeck

A library that creates and shuffles a deck of cards from which you can draw

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Linux CI

zigdeck

A library that creates and shuffles a deck of cards from which you can draw

Tested with the the development version of zig (may not build with the last release).

Example

    // initialize the deck. This must be done before shuffle.
    var deck = Deck.init();

    try std.testing.expectEqual(Suit.Clubs, deck.cards[0].suit);
    try std.testing.expectEqual(Face.Ace, deck.cards[0].face);
    try std.testing.expectEqual(Suit.Spades, deck.cards[48].suit);
    try std.testing.expectEqual(Face.King, deck.cards[51].face);

    // Seed the random number generator
    var rng = std.rand.DefaultPrng.init(@as(u64, @intCast(std.time.milliTimestamp())));

    // Shuffle
    Deck.shuffle(&deck, &rng.random());

    // Draw one card
    const card = Deck.getTopCard(&deck) orelse return;

    try std.testing.expectEqual(Suit.Clubs, card.suit);
    try std.testing.expectEqual(Face.Queen, card.face);

    std.debug.print("Top card: Suit = {}, Value = {}\n", .{ card.suit, card.face });

This library is used by zigpokerhands.

About

A library that creates and shuffles a deck of cards from which you can draw

License:MIT License


Languages

Language:Zig 100.0%