remote-control-car

This commit is contained in:
2023-12-22 23:18:08 -05:00
parent 3b19351ce4
commit cd5d83851d
11 changed files with 570 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
defmodule RemoteControlCar do
@enforce_keys [:nickname]
defstruct [:nickname, battery_percentage: 100, distance_driven_in_meters: 0]
def new(nickname \\ "none"), do: %__MODULE__{nickname: nickname}
def display_distance(%__MODULE__{distance_driven_in_meters: distance_driven_in_meters} = _remote_car) do
"#{distance_driven_in_meters} meters"
end
def display_battery(%__MODULE__{battery_percentage: 0} = _remote_car) do
"Battery empty"
end
def display_battery(%__MODULE__{battery_percentage: battery_percentage} = _remote_car) do
"Battery at #{battery_percentage}%"
end
def drive(%__MODULE__{battery_percentage: 0} = remote_car), do: remote_car
def drive(%__MODULE__{} = remote_car) do
%{
remote_car |
battery_percentage: remote_car.battery_percentage - 1,
distance_driven_in_meters: remote_car.distance_driven_in_meters + 20,
}
end
end