Powered by AppSignal & Oban Pro

Blockr Points

6_blockr project groups.livemd

Blockr Points

one-point

p =
  Point.new(1, 5)
  |> Point.move_down()
  |> Point.move_down()
  |> Point.move_down()
  |> Point.move_left()
  |> Point.move_right()

Canvas.new(p)

Multiple Point

points =
  [
    Point.new(2, 5),
    Point.new(2, 6),
    Point.new(3, 4),
    Point.new(3, 5)
  ]

Canvas.new(points)
# points = 
#   [
#     (Point.new(2,5)|> Point.move_right()),
#     (Point.new(2,6)|> Point.move_right()),
#     (Point.new(3,4)|> Point.move_right()),
#     (Point.new(3,5)|> Point.move_right()),
#   ]

# points_data = [{2, 5}, {2, 6}, {3, 4}, {3, 5}]

# points = Enum.map(points_data, fn {x, y} ->
#   Point.new(x, y) |> Point.move_right()
# end)

# points =
#   [{2, 5}, {2, 6}, {3, 4}, {3, 5}]
#   |> Enum.map(fn {x, y} -> Point.new(x, y) |> Point.move_right() end)
# Canvas.new(points)

# points =
#   [{2, 5}, {2, 6}, {3, 4}, {3, 5}]
#   |> Enum.map(&Point.new(elem(&1, 0), elem(&1, 1)) |> Point.move_right())
#   |> Canvas.new()

points =
  [
    Point.new(2, 5),
    Point.new(2, 6),
    Point.new(3, 4),
    Point.new(3, 5)
  ]

points
|> Enum.map(&Point.move_right/1)
|> Enum.map(&Point.move_right/1)
|> Enum.map(&Point.move_down/1)
|> Canvas.new()

Big Tetromino

points =
  [
    Point.new(2, 2),
    Point.new(3, 2),
    Point.new(4, 2),
    Point.new(4, 3)
  ]

Canvas.tetromino(points)
defmodule Spinner do
  def swap({row, col}) do
    {col, row}
  end

  def flip_left_right(point) do
    # flipped
    point
  end

  def flip_top_bottom(point) do
    # flipped
    point
  end
end
{:module, Spinner, <<70, 79, 82, 49, 0, 0, 5, ...>>, {:swap, 1}}
points
|> Enum.map(&Spinner.swap/1)
|> Canvas.tetromino()