Packages
hangman_text_client
0.1.75
0.1.87
0.1.86
0.1.85
0.1.84
0.1.83
0.1.82
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
Text client for the Hangman Game.
Current section
Files
Jump to
Current section
Files
lib/hangman/text/client/summary.ex
defmodule Hangman.Text.Client.Summary do
@moduledoc """
Displays a summary of the game.
"""
alias IO.ANSI.Plus, as: ANSI
alias Hangman.Text.Client.State
@sp " "
@doc """
Displays a summary of the game.
"""
@spec display(State.t()) :: State.t()
def display(state) do
message(state) |> ANSI.puts()
state
end
## Private functions
# Word so far: _ a n a g e d
# Guesses left: 2
# Letters used: a d e f g n r t u y
@spec message(State.t()) :: ANSI.ansilist()
defp message(%State{tally: %{turns_left: 1} = tally}) do
# Message highlighted to signal last guess...
[
:reset,
:light_yellow,
"\nWord so far: ",
:light_magenta,
"#{Enum.join(tally.letters, @sp)}",
:light_yellow,
"\nGuesses left: ",
:light_magenta,
"1",
:light_yellow,
"\nLetters used: ",
:light_magenta,
"#{Enum.join(tally.guesses, @sp)}\n"
]
end
defp message(%State{tally: tally}) do
[
:reset,
:light_white,
"\nWord so far: ",
:light_cyan,
"#{Enum.join(tally.letters, @sp)}",
:light_white,
"\nGuesses left: ",
:light_cyan,
"#{tally.turns_left}",
:light_white,
"\nLetters used: ",
:light_cyan,
"#{Enum.join(tally.guesses, @sp)}\n"
]
end
end