Hangman.Engine (Hangman Game v0.1.41) View Source
Models the Hangman Game. Times out after 30 minutes of inactivity.
Based on the course Elixir for Programmers by Dave Thomas.
Link to this section Summary
Functions
Stops a game server process normally. It won't be restarted.
Makes a move by guessing a letter.
Starts a new game server process and supervises it.
Returns the tally of a game.
Link to this section Functions
Specs
end_game(Hangman.Game.name()) :: :ok
Stops a game server process normally. It won't be restarted.
Examples
iex> alias Hangman.Engine
iex> Engine.new_game("Ben")
iex> Engine.end_game("Ben")
:ok
Specs
make_move(Hangman.Game.name(), Hangman.Game.letter()) :: Hangman.Game.tally()
Makes a move by guessing a letter.
Examples
iex> alias Hangman.Engine
iex> Engine.new_game("Ed")
iex> Engine.make_move("Ed", "a").game_state in [:good_guess, :bad_guess]
true
Specs
new_game(Hangman.Game.name()) :: Supervisor.on_start_child()
Starts a new game server process and supervises it.
Examples
iex> alias Hangman.Engine
iex> {:ok, game_id} = Engine.new_game("Meg")
iex> {:error, {:already_started, ^game_id}} = Engine.new_game("Meg")
iex> is_pid(game_id)
true
Specs
tally(Hangman.Game.name()) :: Hangman.Game.tally()
Returns the tally of a game.
Examples
iex> alias Hangman.Engine
iex> Engine.new_game("Jim")
iex> tally = Engine.tally("Jim")
iex> %{
...> game_state: :initializing,
...> turns_left: 7,
...> letters: letters,
...> guesses: []
...> } = tally
iex> all_underscores? = Enum.all?(letters, & &1 == "_")
iex> is_list(letters) and length(letters) > 0 and all_underscores?
true