Current section

Files

Jump to
tictactoe lib player.ex
Raw

lib/player.ex

defmodule Player do
defstruct symbol: "", name: "", type: "", level: "", turn: ""
def create("COMPUTER_EASY") do
%Player{type: "COMPUTER", level: "EASY"}
end
def create("COMPUTER_HARD") do
%Player{type: "COMPUTER", level: "HARD"}
end
def create("HUMAN") do
%Player{type: "HUMAN"}
end
def create(_other) do
IO.puts("Invalid type. Must be either computer or human")
Input.get_player_type
|> create
end
def set_name(player) do
player_name = Input.gets("Enter player name: ")
case name_validator(player_name) do
:valid ->
%{player | name: player_name}
:invalid ->
IO.puts("Name cannot be empty.")
set_name(player)
end
end
def set_symbol(player) do
symbol = Input.gets("Enter player symbol: ")
case symbol_validator(symbol) do
:valid ->
%{player | symbol: symbol}
:invalid ->
IO.puts("Invalid symbol. Must be single alphanumeric character.")
set_symbol(player)
end
end
def name_validator(name) do
if String.trim(name) == "", do: :invalid, else: :valid
end
def symbol_validator(symbol) do
if Regex.match?(~r/^[a-zA-Z0-9]$/, symbol), do: :valid, else: :invalid
end
end