README.md

# Hangman Text Client

Text client for the _Hangman Game_.

##### Based on the course [Elixir for Programmers](https://codestool.coding-gnome.com/courses/elixir-for-programmers) by Dave Thomas.

## Usage

To play the _Hangman Game_, clone `hangman_engine` and compile it:

```
git clone https://github.com/RaymondLoranger/hangman_engine
cd hangman_engine
mix deps.get
mix compile
```

Then, clone `hangman_text_client` and compile it:

```
git clone https://github.com/RaymondLoranger/hangman_text_client
cd hangman_text_client
mix deps.get
mix compile
```

Also create the dev and prod releases if you wish to use releases.

## Locally when local node is not alive

Start a game like so:

```
cd hangman_text_client
iex -S mix
:observer.start() # optional
Hangman.Text.Client.start()
```

## Remotely when local node is alive

App `:hangman_engine` must run on node `:hangman_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 hangman_engine
iex --sname hangman_engine -S mix
:observer.start() # optional
```

Start a game from a different node with a short name:

```
cd hangman_text_client
set "MIX_ENV=dev" && iex --sname mike -S mix
Hangman.Text.Client.start()
```

### Long names

Start the engine using a long name:

```
cd hangman_engine
iex --name hangman_engine@rays.supratech.ca -S mix
:observer.start() # optional
```

Start a game from a different node with a long name:

```
cd hangman_text_client
set "MIX_ENV=prod" && iex --name mike@rays.supratech.ca -S mix
Hangman.Text.Client.start()
```

### Short names using releases

Start the engine using a short name:

```
cd hangman_engine
iex --sname hangman_engine --cookie fortune -S mix
:observer.start() # optional
```

Start a game from a different node with a short name:

```
cd hangman_text_client
set RELEASE_NODE=mike@rays
"_build/dev/rel/hangman_text_client/bin/hangman_text_client" start_iex
Hangman.Text.Client.start()
```

### Long names using releases

Start the engine using a long name:

```
cd hangman_engine
iex --name hangman_engine@rays.supratech.ca --cookie fortune -S mix
:observer.start() # optional
```

Start a game from a different node with a long name:

```
cd hangman_text_client
set RELEASE_NODE=mike@rays.supratech.ca
"_build/prod/rel/hangman_text_client/bin/hangman_text_client" start_iex
Hangman.Text.Client.start()
```