Sergidev's picture
v1.0a
8752997
raw
history blame contribute delete
796 Bytes
defmodule Hexalixir.Grid do
@grid_size 20
def new do
for x <- 0..(@grid_size - 1),
y <- 0..(@grid_size - 1),
into: %{} do
{{x, y}, nil}
end
end
def get_adjacent_coords({x, y}) do
[
{x + 1, y}, {x - 1, y}, # right, left
{x, y + 1}, {x, y - 1}, # up, down
{x + 1, y - 1}, {x - 1, y + 1} # diagonals
]
|> Enum.filter(fn {x, y} ->
x >= 0 && x < @grid_size && y >= 0 && y < @grid_size
end)
end
def random_color do
["#FF0000", "#00FF00", "#0000FF", "#FFFF00", "#FF00FF", "#00FFFF"]
|> Enum.random()
end
def check_win(grid) do
grid
|> Map.values()
|> Enum.reject(&is_nil/1)
|> case do
[] -> false
[color | rest] -> Enum.all?(rest, &(&1 == color))
end
end
end