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
```
If you wish to use releases, see [release notes](release%20notes.txt).
## LOCALLY WHEN LOCAL NODE IS NOT ALIVE
Start each client like so:
### *WITHOUT USING RELEASES*
```
cd hangman_text_client
iex -S mix
:observer.start() # optional
Hangman.Text.Client.start()
```
### *USING RELEASES*
#### Commmand shell
```
cd hangman_text_client
"_build/nonode/rel/hangman_text_client/bin/hangman_text_client" start_iex
:observer.start() # optional
Hangman.Text.Client.start()
```
#### PowerShell
```
cd hangman_text_client
_build/nonode/rel/hangman_text_client/bin/hangman_text_client start_iex
: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 WITHOUT USING RELEASES*
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:
#### Commmand shell
```
cd hangman_text_client
set "MIX_ENV=dev" && iex --sname mike -S mix
:observer.start() # optional
Hangman.Text.Client.start()
```
#### PowerShell
```
cd hangman_text_client
$Env:MIX_ENV = "dev"; iex --sname mike -S mix
:observer.start() # optional
Hangman.Text.Client.start()
```
### *LONG NAMES WITHOUT USING RELEASES*
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:
#### Commmand shell
```
cd hangman_text_client
set "MIX_ENV=prod" && iex --name mike@rays.supratech.ca -S mix
:observer.start() # optional
Hangman.Text.Client.start()
```
#### PowerShell
```
cd hangman_text_client
$Env:MIX_ENV = "prod"; iex --name mike@rays.supratech.ca -S mix
:observer.start() # optional
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:
#### Command shell
```
cd hangman_text_client
set RELEASE_NODE=mike@rays
"_build/dev/rel/hangman_text_client/bin/hangman_text_client" start_iex
:observer.start() # optional
Hangman.Text.Client.start()
```
#### PowerShell
```
cd hangman_text_client
$Env:RELEASE_NODE = "mike@rays"
_build/dev/rel/hangman_text_client/bin/hangman_text_client start_iex
:observer.start() # optional
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:
#### Commmand shell
```
cd hangman_text_client
set RELEASE_NODE=mike@rays.supratech.ca
"_build/prod/rel/hangman_text_client/bin/hangman_text_client" start_iex
:observer.start() # optional
Hangman.Text.Client.start()
```
#### PowerShell
```
cd hangman_text_client
$Env:RELEASE_NODE = "mike@rays.supratech.ca"
_build/prod/rel/hangman_text_client/bin/hangman_text_client start_iex
:observer.start() # optional
Hangman.Text.Client.start()
```