Skip to content

Instantly share code, notes, and snippets.

@neslinesli93
Created January 2, 2020 21:05
Show Gist options
  • Save neslinesli93/86c7668bc72bc9d6f8bdff82b164bb10 to your computer and use it in GitHub Desktop.
Save neslinesli93/86c7668bc72bc9d6f8bdff82b164bb10 to your computer and use it in GitHub Desktop.
Make the paddle actually advance
@spec advance_paddle(Socket.t()) :: Socket.t()
defp advance_paddle(%{assigns: %{paddle: paddle, unit: unit}} = socket) do
case paddle.direction do
:left -> assign(socket, :paddle, move_paddle_left(paddle, unit))
:right -> assign(socket, :paddle, move_paddle_right(paddle, unit))
:stationary -> socket
end
end
@spec move_paddle_left(map(), number()) :: map()
defp move_paddle_left(paddle, unit) do
new_left = max(unit, paddle.left - paddle.speed)
%{paddle | left: new_left, right: paddle.right - (paddle.left - new_left)}
end
@spec move_paddle_right(map(), number()) :: map()
defp move_paddle_right(paddle, unit) do
new_left = min(paddle.left + paddle.speed, unit * (@board_cols - paddle.length - 1))
%{paddle | left: new_left, right: paddle.right + (new_left - paddle.left)}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment