CardShark.Deck (CardShark v0.1.0) View Source

Deck operations such as generating a new deck, shuffling, and dealing can be found here

Link to this section Summary

Functions

Returns n_cards from the deck and the rest of the deck.

Returns an unshuffled deck

Returns a full shuffled deck of cards (52 cards).

Link to this section Functions

Specs

deal([%CardShark.Card{face: term(), suit: term(), value: term()}], integer()) ::
  {[%CardShark.Card{face: term(), suit: term(), value: term()}],
   [%CardShark.Card{face: term(), suit: term(), value: term()}]}

Returns n_cards from the deck and the rest of the deck.

Example

iex> deck = Deck.new() |> Enum.take(5)
iex> Deck.deal(deck, 2)
{
  [
    %Card{face: "ace", suit: :clubs, value: 14},
    %Card{face: "2", suit: :clubs, value: 2}
  ],
  [
    %Card{face: "3", suit: :clubs, value: 3},
    %Card{face: "4", suit: :clubs, value: 4},
    %Card{face: "5", suit: :clubs, value: 5},
  ]}

Returns an unshuffled deck

Example

iex> Deck.new()
[
  %Card{face: "ace", suit: :clubs, value: 14},
  %Card{face: "2", suit: :clubs, value: 2},
  %Card{face: "3", suit: :clubs, value: 3},
  %Card{face: "4", suit: :clubs, value: 4},
  %Card{face: "5", suit: :clubs, value: 5},
  %Card{face: "6", suit: :clubs, value: 6},
  %Card{face: "7", suit: :clubs, value: 7},
  %Card{face: "8", suit: :clubs, value: 8},
  %Card{face: "9", suit: :clubs, value: 9},
  %Card{face: "10", suit: :clubs, value: 10},
  %Card{face: "jack", suit: :clubs, value: 11},
  %Card{face: "queen", suit: :clubs, value: 12},
  %Card{face: "king", suit: :clubs, value: 13},
  %Card{face: "ace", suit: :hearts, value: 14},
  %Card{face: "2", suit: :hearts, value: 2},
  %Card{face: "3", suit: :hearts, value: 3},
  %Card{face: "4", suit: :hearts, value: 4},
  %Card{face: "5", suit: :hearts, value: 5},
  %Card{face: "6", suit: :hearts, value: 6},
  %Card{face: "7", suit: :hearts, value: 7},
  %Card{face: "8", suit: :hearts, value: 8},
  %Card{face: "9", suit: :hearts, value: 9},
  %Card{face: "10", suit: :hearts, value: 10},
  %Card{face: "jack", suit: :hearts, value: 11},
  %Card{face: "queen", suit: :hearts, value: 12},
  %Card{face: "king", suit: :hearts, value: 13},
  %Card{face: "ace", suit: :diamonds, value: 14},
  %Card{face: "2", suit: :diamonds, value: 2},
  %Card{face: "3", suit: :diamonds, value: 3},
  %Card{face: "4", suit: :diamonds, value: 4},
  %Card{face: "5", suit: :diamonds, value: 5},
  %Card{face: "6", suit: :diamonds, value: 6},
  %Card{face: "7", suit: :diamonds, value: 7},
  %Card{face: "8", suit: :diamonds, value: 8},
  %Card{face: "9", suit: :diamonds, value: 9},
  %Card{face: "10", suit: :diamonds, value: 10},
  %Card{face: "jack", suit: :diamonds, value: 11},
  %Card{face: "queen", suit: :diamonds, value: 12},
  %Card{face: "king", suit: :diamonds, value: 13},
  %Card{face: "ace", suit: :spades, value: 14},
  %Card{face: "2", suit: :spades, value: 2},
  %Card{face: "3", suit: :spades, value: 3},
  %Card{face: "4", suit: :spades, value: 4},
  %Card{face: "5", suit: :spades, value: 5},
  %Card{face: "6", suit: :spades, value: 6},
  %Card{face: "7", suit: :spades, value: 7},
  %Card{face: "8", suit: :spades, value: 8},
  %Card{face: "9", suit: :spades, value: 9},
  %Card{face: "10", suit: :spades, value: 10},
  %Card{face: "jack", suit: :spades, value: 11},
  %Card{face: "queen", suit: :spades, value: 12},
  %Card{face: "king", suit: :spades, value: 13},
]

Returns a full shuffled deck of cards (52 cards).

## Examples

  iex> Deck.shuffled() != Deck.new()
  true