Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Canasta

This is a library for the card game canasta, providing a simple interface when creating a back-end and/or front-end for the game.

Installation

Simply add this to your mix.exs file:

{:canasta, "~> 0.1.0"},

Testing

To make sure everything works as it should, simply run mix test. This is also done on every push to the repository, so you shouldn't have to worry about this.

Usage

To provide an interface as simple as possible for the user, I've merged all setup required into one function Canasta.Game.create/0. This will return a new Canasta.Game structure, which is what you will interact with throughout the use of the lib.

game = Canasta.Game.create

The structure of the game looks like this, and this is what you will retrieve when structuring your front/back-end:

%Canasta.Game{
  pile: [
    %Canasta.Card{rank: :jack, suit: :hearts},
    %Canasta.Card{rank: :jack, suit: :diamonds},
    %Canasta.Card{rank: 5, suit: :spades},
    %Canasta.Card{rank: 6, suit: :clubs},
    ...
  ],
  player_one: %Canasta.Player{
    hand: [
      %Canasta.Card{...},
      ...
    ],
    points: 0,
    red_threes: [%Canasta.Card{...}],
    table: [
      %Meld{cards: [%Canasta.Card{...}]}
    ]
  },
  player_turn: :player_one,
  player_two: %Canasta.Player{
    ...
  },
  pulled: true,
  table: [%Canasta.Card{...}]
}

Available actions

To perform an action you will use the Canasta.Game.play/2 function. This will either return a tuple, where the first element is an error, or just a Canasta.Game structure -- if successful.

Draw

Input: %{action: :draw}.

This will give a card to the player whose turn it is.

Play a card

Input: %{action: :play_card, card: %Canasta.Card{...}}

This will play the card from the hand of the current player.

Meld

Input: %{action: :meld, melds: [%Canasta.Meld{...}]}

This will create a meld (or several if specified) with the cards from the players hand. If the player has not drafted a card, it will try to take the top card on the table and create a meld with that. If the player has drafted a card, a normal meld (or melds) will be created.

About

Open source implementation of the card game canasta.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages