Packages

A module that provides functions for creating and dealing playing cards.

Current section

Files

Jump to
playing_cards doc Cards.html
Raw

doc/Cards.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.20.2">
<meta name="project" content="Cards v0.1.0">
<title>Cards — Cards v0.1.0</title>
<link rel="stylesheet" href="dist/html-d9f58a6320b5bfa6dd77.css" />
<link rel="canonical" href="https://hexdocs.pm/playing_cards/Cards.html" />
<script src="dist/sidebar_items-8e34a0595f.js"></script>
<script src="docs_config.js"></script>
<script async src="dist/html-d9f58a6320b5bfa6dd77.js"></script>
</head>
<body data-type="modules">
<script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script>
<div class="main">
<button class="sidebar-button sidebar-toggle">
<span class="icon-menu" title="Collapse/expand sidebar"></span>
</button>
<section class="sidebar">
<form class="sidebar-search" action="search.html">
<button type="submit" class="search-button">
<span class="icon-search" aria-hidden="true"></span>
</button>
<button type="button" tabindex="-1" class="search-close-button">
<span class="icon-cross" title="Cancel search"></span>
</button>
<label class="search-label">
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search..." aria-label="Search" autocomplete="off" />
</label>
</form>
<div class="autocomplete">
<div class="autocomplete-results">
</div>
</div>
<div class="sidebar-header">
<div class="sidebar-projectDetails">
<a href="api-reference.html" class="sidebar-projectName">
Cards </a>
<h2 class="sidebar-projectVersion">
v0.1.0
</h2>
</div>
</div>
<ul class="sidebar-listNav">
<li><a id="extras-list" href="#full-list">Pages</a></li>
<li><a id="modules-list" href="#full-list">Modules</a></li>
</ul>
<div class="gradient"></div>
<ul id="full-list" class="sidebar-fullList"></ul>
</section>
<section class="content">
<div class="content-outer">
<div id="content" class="content-inner">
<h1>
<small class="app-vsn">Cards v0.1.0</small>
Cards
<a href="https://github.com/baileygranam/elixir-cards/blob/master/lib/cards.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</h1>
<section id="moduledoc">
<p> Provides methods for creating and handling a deck of cards.</p>
</section>
<section id="summary" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#summary">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Summary
</h1>
<div class="summary-functions summary">
<h2>
<a href="#functions">Functions</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#contains?/2">contains?(deck, card)</a>
</div>
<div class="summary-synopsis"><p>Returns <code class="inline">true</code> if deck contains a given card, otherwise <code class="inline">false</code>.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#create_deck/0">create_deck()</a>
</div>
<div class="summary-synopsis"><p>Generates a standard 52-card deck as a list of strings.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#deal/2">deal(deck, hand_size)</a>
</div>
<div class="summary-synopsis"><p>Divides a deck into a hand and the remainder of the deck.
The <code class="inline">hand_size</code> argument indicates how many cards should be in the hand.
Returns a tuple with two lists. The first list contains <code class="inline">number</code> of cards
split from the <code class="inline">deck</code>. The second list contains the remaining <code class="inline">deck</code> of cards.
This function utilizes the Elixir Enum module split function.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#hand/1">hand(hand_size)</a>
</div>
<div class="summary-synopsis"><p>Returns a tuple with <code class="inline">{hand, deck}</code> where hand has <code class="inline">hand_size</code> number of cards.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#load/1">load(filename)</a>
</div>
<div class="summary-synopsis"><p>Load a deck of cards from the specified <code class="inline">filename</code>. If the file
does not exist</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#save/2">save(deck, filename)</a>
</div>
<div class="summary-synopsis"><p>Save a <code class="inline">deck</code> of cards to the specified <code class="inline">filename</code> for future access.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#shuffle/1">shuffle(deck)</a>
</div>
<div class="summary-synopsis"><p>Shuffles a deck of cards using the Elixir Enum module shuffle function.</p></div>
</div>
</div>
</section>
<section id="functions" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#functions">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Functions </h1>
<div class="functions-list">
<section class="detail" id="contains?/2">
<div class="detail-header">
<a href="#contains?/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">contains?(deck, card)</span>
<a href="https://github.com/baileygranam/elixir-cards/blob/master/lib/cards.ex#L52" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Returns <code class="inline">true</code> if deck contains a given card, otherwise <code class="inline">false</code>.</p>
<h2 id="contains?/2-examples" class="section-heading">
<a href="#contains?/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deck</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">create_deck</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Cards</span><span class="o">.</span><span class="n">contains?</span><span class="p" data-group-id="7329003409-1">(</span><span class="n">deck</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Ace of Hearts&quot;</span><span class="p" data-group-id="7329003409-1">)</span><span class="w">
</span><span class="no">true</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Cards</span><span class="o">.</span><span class="n">contains?</span><span class="p" data-group-id="7329003409-2">(</span><span class="n">deck</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Eleven of Hearts&quot;</span><span class="p" data-group-id="7329003409-2">)</span><span class="w">
</span><span class="no">false</span></code></pre>
</section>
</section>
<section class="detail" id="create_deck/0">
<div class="detail-header">
<a href="#create_deck/0" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">create_deck()</span>
<a href="https://github.com/baileygranam/elixir-cards/blob/master/lib/cards.ex#L15" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Generates a standard 52-card deck as a list of strings.</p>
<h2 id="create_deck/0-examples" class="section-heading">
<a href="#create_deck/0-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">length</span><span class="p" data-group-id="7752302056-1">(</span><span class="nc">Cards</span><span class="o">.</span><span class="n">create_deck</span><span class="p" data-group-id="7752302056-1">)</span><span class="w">
</span><span class="mi">52</span></code></pre>
</section>
</section>
<section class="detail" id="deal/2">
<div class="detail-header">
<a href="#deal/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">deal(deck, hand_size)</span>
<a href="https://github.com/baileygranam/elixir-cards/blob/master/lib/cards.ex#L71" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Divides a deck into a hand and the remainder of the deck.
The <code class="inline">hand_size</code> argument indicates how many cards should be in the hand.
Returns a tuple with two lists. The first list contains <code class="inline">number</code> of cards
split from the <code class="inline">deck</code>. The second list contains the remaining <code class="inline">deck</code> of cards.
This function utilizes the Elixir Enum module split function.</p>
<h2 id="deal/2-examples" class="section-heading">
<a href="#deal/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deck</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">create_deck</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="p" data-group-id="8910359263-1">{</span><span class="n">hand</span><span class="p">,</span><span class="w"> </span><span class="c">_deck</span><span class="p" data-group-id="8910359263-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">deal</span><span class="p" data-group-id="8910359263-2">(</span><span class="n">deck</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="8910359263-2">)</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">hand</span><span class="w">
</span><span class="p" data-group-id="8910359263-3">[</span><span class="s">&quot;Ace of Diamonds&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Ace of Hearts&quot;</span><span class="p" data-group-id="8910359263-3">]</span></code></pre>
</section>
</section>
<section class="detail" id="hand/1">
<div class="detail-header">
<a href="#hand/1" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">hand(hand_size)</span>
<a href="https://github.com/baileygranam/elixir-cards/blob/master/lib/cards.ex#L124" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Returns a tuple with <code class="inline">{hand, deck}</code> where hand has <code class="inline">hand_size</code> number of cards.</p>
<h2 id="hand/1-examples" class="section-heading">
<a href="#hand/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="p" data-group-id="4946938985-1">{</span><span class="n">hand</span><span class="p">,</span><span class="w"> </span><span class="c">_deck</span><span class="p" data-group-id="4946938985-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">hand</span><span class="p" data-group-id="4946938985-2">(</span><span class="mi">2</span><span class="p" data-group-id="4946938985-2">)</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">length</span><span class="p" data-group-id="4946938985-3">(</span><span class="n">hand</span><span class="p" data-group-id="4946938985-3">)</span><span class="w">
</span><span class="mi">2</span></code></pre>
</section>
</section>
<section class="detail" id="load/1">
<div class="detail-header">
<a href="#load/1" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">load(filename)</span>
<a href="https://github.com/baileygranam/elixir-cards/blob/master/lib/cards.ex#L107" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Load a deck of cards from the specified <code class="inline">filename</code>. If the file
does not exist</p>
<h2 id="load/1-examples" class="section-heading">
<a href="#load/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="p" data-group-id="1744165003-1">{</span><span class="n">hand</span><span class="p">,</span><span class="w"> </span><span class="c">_deck</span><span class="p" data-group-id="1744165003-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">hand</span><span class="p" data-group-id="1744165003-2">(</span><span class="mi">3</span><span class="p" data-group-id="1744165003-2">)</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Cards</span><span class="o">.</span><span class="n">save</span><span class="p" data-group-id="1744165003-3">(</span><span class="n">hand</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;deck.txt&quot;</span><span class="p" data-group-id="1744165003-3">)</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">deck</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">load</span><span class="p" data-group-id="1744165003-4">(</span><span class="s">&quot;deck.txt&quot;</span><span class="p" data-group-id="1744165003-4">)</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">length</span><span class="p" data-group-id="1744165003-5">(</span><span class="n">deck</span><span class="p" data-group-id="1744165003-5">)</span><span class="w">
</span><span class="mi">3</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Cards</span><span class="o">.</span><span class="n">load</span><span class="p" data-group-id="1744165003-6">(</span><span class="s">&quot;fake_deck.txt&quot;</span><span class="p" data-group-id="1744165003-6">)</span><span class="w">
</span><span class="s">&quot;File &#39;fake_deck.txt&#39; does not exist&quot;</span></code></pre>
</section>
</section>
<section class="detail" id="save/2">
<div class="detail-header">
<a href="#save/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">save(deck, filename)</span>
<a href="https://github.com/baileygranam/elixir-cards/blob/master/lib/cards.ex#L85" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Save a <code class="inline">deck</code> of cards to the specified <code class="inline">filename</code> for future access.</p>
<h2 id="save/2-examples" class="section-heading">
<a href="#save/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deck</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">create_deck</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">Cards</span><span class="o">.</span><span class="n">save</span><span class="p" data-group-id="5407905458-1">(</span><span class="n">deck</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;deck.txt&quot;</span><span class="p" data-group-id="5407905458-1">)</span><span class="w">
</span><span class="ss">:ok</span></code></pre>
</section>
</section>
<section class="detail" id="shuffle/1">
<div class="detail-header">
<a href="#shuffle/1" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">shuffle(deck)</span>
<a href="https://github.com/baileygranam/elixir-cards/blob/master/lib/cards.ex#L36" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Shuffles a deck of cards using the Elixir Enum module shuffle function.</p>
<h2 id="shuffle/1-examples" class="section-heading">
<a href="#shuffle/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deck</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">create_deck</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">shuffled_deck</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">Cards</span><span class="o">.</span><span class="n">shuffle</span><span class="p" data-group-id="7287551065-1">(</span><span class="n">deck</span><span class="p" data-group-id="7287551065-1">)</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">deck</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">shuffled_deck</span><span class="w">
</span><span class="no">true</span></code></pre>
</section>
</section>
</div>
</section>
<footer class="footer">
<p>
<span class="line">
Built using
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.20.2),
</span>
<span class="line">
designed by
<a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
</span>
</p>
<p>
<button class="line footer-button night-mode-toggle">
Toggle night mode
</button>
<button class="line footer-button display-shortcuts-help">
Display keyboard shortcuts
</button>
</p>
</footer>
</div>
</div>
</section>
</div>
</body>
</html>