Node.js library for dealing with playing cards of all types
https://github.com/kbjr/node-cards
Fully extensible, you can create custom versions of any component to make different types of deck, including support for custom decks, suits, ranks, and cards.
Version 2 has now been released. Short list of some of the notable changes:
RandomGenerator
interface exists to enable providing a custom RNG implementation.Math.random()
and the node.js crypto
module's pseudoRandomBytes()
as randomization sources.$ npm install cards
import { decks } from 'cards';
// Create a standard 52 card deck + 2 jokers
const deck = new decks.StandardDeck({ jokers: 2 });
// Shuffle the deck
deck.shuffleAll();
// Draw a hand of five cards from the deck
const hand = deck.draw(5);
// Pull 2 cards out of the hand to exchange
const toExchange = hand.splice(2, 2);
// Discard those 2 cards
deck.discard(toExchange);
// Draw 2 new ones from the deck
hand.push(...deck.draw(2));
import { RandomGenerator, decks } from 'cards';
// Create a new RandomGenerator implementation
class MyRNG implements RandomGenerator {
// The `int` method should return a random integer between 0 and `max`
int(max: number) : number {
return (Math.random() * max) | 0;
}
}
// You can pass an instance of RNG implemenation to any `Deck` class, and
// it will be used for any randomization requiring tasks (i.e. shuffling)
const deck = new decks.StandardDeck({ rng: new MyRNG() });
Like my work?
Generated using TypeDoc