View Source Islands.Board (Islands Board v0.1.29)
A board struct and functions for the Game of Islands.
The board struct contains the fields islands
and misses
representing the
characteristics of a board in the Game of Islands.
Based on the book Functional Web Development by Lance Halvorsen.
Summary
Functions
Checks if all islands have been positioned on board
.
Returns a list of island types for forested islands.
Returns a map assigning the CSS grid position of each island
on board
to its island type.
Checks if guess
hit any island on board
and returns a response tuple.
Returns a map assigning the list of hits "cells" of each island
on board
to its island type.
Returns the board
's total number of hits.
Returns a map assigning to :squares the list of square numbers
from the board
's misses.
Returns the board
's total number of misses.
Returns an empty board struct.
Positions island
on board
and returns an updated board
or
{:error, reason}
if island
overlaps another board
's island.
Types
@type islands() :: %{required(Islands.Island.type()) => Islands.Island.t()}
A map assigning islands to their island types
@type t() :: %Islands.Board{islands: islands(), misses: Islands.Island.coords()}
A board struct for the Game of Islands
Functions
Checks if all islands have been positioned on board
.
@spec forested_types(t()) :: [Islands.Island.type()]
Returns a list of island types for forested islands.
@spec grid_positions(t()) :: %{ required(Islands.Island.type()) => Islands.Island.grid_position() }
Returns a map assigning the CSS grid position of each island
on board
to its island type.
@spec guess(t(), Islands.Coord.t()) :: Islands.Board.Response.t()
Checks if guess
hit any island on board
and returns a response tuple.
@spec hit_cells(t()) :: %{ required(Islands.Island.type()) => [Islands.Island.grid_cell()] }
Returns a map assigning the list of hits "cells" of each island
on board
to its island type.
@spec hits(t()) :: non_neg_integer()
Returns the board
's total number of hits.
@spec miss_squares(t()) :: %{squares: [Islands.Coord.square()]}
Returns a map assigning to :squares the list of square numbers
from the board
's misses.
@spec misses(t()) :: non_neg_integer()
Returns the board
's total number of misses.
@spec new() :: t()
Returns an empty board struct.
@spec position_island(t(), Islands.Island.t()) :: t() | {:error, atom()}
Positions island
on board
and returns an updated board
or
{:error, reason}
if island
overlaps another board
's island.