BattleCity.Position (battle_city v0.1.3) View Source

Position

Link to this section Summary

Functions

iex> Elixir.BattleCity.Position.div_even(24.1) 4 iex> Elixir.BattleCity.Position.div_even(23.9) 2 iex> Elixir.BattleCity.Position.div_even(32.1) 4 iex> Elixir.BattleCity.Position.div_even(40.1) 6 iex> Elixir.BattleCity.Position.div_even(39.9) 4

iex> Elixir.BattleCity.Position.normalize_number(:up, 2, :x) 2 iex> Elixir.BattleCity.Position.normalize_number(:up, 3) 4 iex> Elixir.BattleCity.Position.normalize_number(:down, 3) 2

iex> Elixir.BattleCity.Position.target(%{direction: :right, rx: 0}, 2) 2 iex> Elixir.BattleCity.Position.target(%{direction: :left, rx: 1}, 2) 0 iex> Elixir.BattleCity.Position.target(%{direction: :up, ry: 3}, 2) 1

Link to this section Types

Specs

coordinate() :: {x(), y()}

Specs

direction() :: :up | :down | :left | :right

Specs

height() :: 0..2

Specs

path() :: [coordinate()]

Specs

rx() :: 0..192

Specs

ry() :: 0..192

Specs

speed() :: 1..10

Specs

t() :: %BattleCity.Position{
  __module__: module(),
  __parent__: term(),
  direction: direction(),
  path: path(),
  rt: rx_or_ry(),
  rx: rx(),
  ry: ry(),
  t: x_or_y(),
  x: x(),
  y: y()
}

Specs

width() :: 0..2

Specs

x() :: 0..24

Specs

y() :: 0..24

Link to this section Functions

Specs

destination(t(), speed()) :: t()

Specs

div_even(float()) :: x_or_y()

iex> Elixir.BattleCity.Position.div_even(24.1) 4 iex> Elixir.BattleCity.Position.div_even(23.9) 2 iex> Elixir.BattleCity.Position.div_even(32.1) 4 iex> Elixir.BattleCity.Position.div_even(40.1) 6 iex> Elixir.BattleCity.Position.div_even(39.9) 4

Specs

init(map()) :: t()
Link to this macro

is_on_border(p)

View Source (macro)
Link to this macro

is_on_border_xy(p)

View Source (macro)

Specs

normalize(t()) :: t()
Link to this function

normalize_number(direction, n, x_or_y \\ nil)

View Source

Specs

normalize_number(direction(), x_or_y(), :x | :y | nil) :: x_or_y()

iex> Elixir.BattleCity.Position.normalize_number(:up, 2, :x) 2 iex> Elixir.BattleCity.Position.normalize_number(:up, 3) 4 iex> Elixir.BattleCity.Position.normalize_number(:down, 3) 2

Specs

target(t(), speed()) :: rx_or_ry()

iex> Elixir.BattleCity.Position.target(%{direction: :right, rx: 0}, 2) 2 iex> Elixir.BattleCity.Position.target(%{direction: :left, rx: 1}, 2) 0 iex> Elixir.BattleCity.Position.target(%{direction: :up, ry: 3}, 2) 1

Specs

target_path(t(), direction()) :: path()