# `Islands.Player`
[🔗](https://github.com/RaymondLoranger/islands_player/blob/main/lib/islands/player.ex#L4)

Creates a player struct for the _Game of Islands_.

The player struct contains the fields:

  - `name`
  - `gender`
  - `pid`
  - `board`
  - `guesses`

representing the properties of a player in the _Game of Islands_.

##### Based on the book [Functional Web Development](https://pragprog.com/titles/lhelph/functional-web-development-with-elixir-otp-and-phoenix/) by Lance Halvorsen.

# `gender`

```elixir
@type gender() :: :f | :m
```

Player's gender

# `name`

```elixir
@type name() :: String.t()
```

Player's name

# `t`

```elixir
@type t() :: %Islands.Player{
  board: Islands.Board.t(),
  gender: gender(),
  guesses: Islands.Guesses.t(),
  name: name(),
  pid: pid() | nil
}
```

A player struct for the Game of Islands

# `new`

```elixir
@spec new(name(), gender(), pid() | nil) :: t() | {:error, :invalid_player_args}
```

Creates a player struct from `name`, `gender` and `pid`.

## Examples

    iex> alias Islands.{Board, Guesses, Player}
    iex> Player.new("Joe", :m, nil)
    %Player{
      name: "Joe",
      gender: :m,
      pid: nil,
      board: Board.new(),
      guesses: Guesses.new()
    }

---

*Consult [api-reference.md](api-reference.md) for complete listing*
