View Source Islands.Text.Client (Islands Text Client v0.2.63)
Text client for the Game of Islands.
Inspired by the book Functional Web Development by Lance Halvorsen.
Also inspired by the course Elixir for Programmers by Dave Thomas.
Summary
Functions
Returns the islands engine node.
Lets player2 join a game on a remote node.
Lets player1 start a game on a remote node.
Functions
@spec engine_node() :: node()
Returns the islands engine node.
Examples
iex> alias Islands.Text.Client
iex> engine_node = Client.engine_node()
iex> "#{engine_node}" =~ "islands_engine@"
true
@spec join( Islands.Game.name(), Islands.Player.name(), Islands.Player.gender(), Keyword.t() ) :: no_return()
Lets player2 join a game on a remote node.
Short names
Player2 joins a game from a different node with a short name:
cd islands_text_client
set "MIX_ENV=dev" && iex --sname client2 -S mix
Islands.Text.Client.join("Eden", "Eve", :f)
Long names
Player2 joins a game from a different node with a long name:
cd islands_text_client
set "MIX_ENV=prod" iex --name client2@rays.supratech.ca -S mix
Islands.Text.Client.join("Eden", "Eve", :f)
Parameters
game_name
- game name (string)player2_name
- player2 name (string)gender
- gender as either:f
or:m
(atom)options
- up to 2 options (keyword)
Options
:mode
- (:manual
or:auto
) specifies whether player2 will play in manual or auto mode; defaults to:manual
.:pause
- (nonnegative integer) specifies the duration in milliseconds of the pause between moves in auto mode (should be between 0 and 10,000); defaults to0
milliseconds.
@spec start( Islands.Game.name(), Islands.Player.name(), Islands.Player.gender(), Keyword.t() ) :: no_return()
Lets player1 start a game on a remote node.
App :islands_engine
must run on node :islands_engine@<hostname>
where
<hostname>
is either the full host name if long names are used, or the first
part of the full host name if short names are used.
Short names
Start the engine using a short name:
cd islands_engine
iex --sname islands_engine -S mix
:observer.start # optional
Player1 starts a game from a different node with a short name:
cd islands_text_client
set "MIX_ENV=dev" && iex --sname client1 -S mix
Islands.Text.Client.start("Eden", "Adam", :m)
Long names
Start the engine using a long name:
cd islands_engine
iex --name islands_engine@rays.supratech.ca -S mix
:observer.start # optional
Player1 starts a game from a different node with a long name:
cd islands_text_client
set "MIX_ENV=prod" && iex --name client1@rays.supratech.ca -S mix
Islands.Text.Client.start("Eden", "Adam", :m)
Parameters
game_name
- game name (string)player1_name
- player1 name (string)gender
- gender as either:f
or:m
(atom)options
- up to 2 options (keyword)
Options
:mode
- (:manual
or:auto
) specifies whether player1 will play in manual or auto mode; defaults to:manual
.:pause
- (nonnegative integer) specifies the duration in milliseconds of the pause between moves in auto mode (should be between 0 and 10,000); defaults to0
milliseconds.