defmodule Hangman do
alias Hangman.Runtime.Server
alias Hangman.Type
@opaque game :: Server.t()
@type tally :: Type.tally()
@spec new_game() :: game
def new_game do
{:ok, pid} = Hangman.Runtime.Application.start_game()
pid
end
@doc ~S"""
Make a hangmn move
"""
@spec make_move(game, String.t()) :: tally()
def make_move(game, guess) do
GenServer.call(game, {:make_move, guess})
end
@doc ~S"""
get back the game status
"""
@spec tally(game) :: tally()
def tally(game) do
GenServer.call(game, {:tally})
end
end