Powered by AppSignal & Oban Pro

Games: Supervised Score Tracker

games_supervised_score_tracker.livemd

Games: Supervised Score Tracker

Mix.install([
  {:jason, "~> 1.4"},
  {:kino, "~> 0.9", override: true},
  {:youtube, github: "brooklinjazz/youtube"},
  {:hidden_cell, github: "brooklinjazz/hidden_cell"}
])

Navigation

Home Report An Issue Games: Supervisor SetupTask

Games: Supervised Score Tracker

Refactor your existing Games: Score Tracker module to be a named process and configure it with your Games Supervisor. Ensure your existing Games: Score Tracker test suite continue to pass. You may need to alter it slightly now that Games.ScoreTracker is a named process.

If you don’t already have a ScoreTracker module you can use the one below.

defmodule ScoreTracker do
  use GenServer

  def start_link(opts) do
    name = Keyword.get(opts, :name, __MODULE__)
    GenServer.start_link(__MODULE__, [], name: name)
  end

  def add(pid \\ __MODULE__, points) do
    GenServer.call(pid, {:add, points})
  end

  def get(pid \\ __MODULE__) do
    GenServer.call(pid, :get)
  end

  @impl true
  def init(_opts) do
    {:ok, 0}
  end

  @impl true
  def handle_call(:get, _from, state) do
    {:reply, state, state}
  end

  @impl true
  def handle_call({:add, points}, _from, state) do
    {:reply, state + points, state + points}
  end
end

Bonus: Track Scores

Whenever a player wins a round of Guessing Game, RockPaperScissors, or Wordle, increase the player’s score.

(Optional) Consider printing the current score every time you increment it to make debugging and visual display easier. (Optional) Each game can be worth the same amount of points, or you might vary the points depending on the game.

Bonus: Score Menu

In the previously implemented Games.Menu module, implement a Total Score option which prints the current total score. It should use the Games.ScoreTracker module to get the current score.

$ ./games
Select a game:
1. Guessing Game
2. Rock Paper Scissors
3. Wordle
4. Total Score
Select: 4
Your current session score: 3

Commit Your Progress

DockYard Academy now recommends you use the latest Release rather than forking or cloning our repository.

Run git status to ensure there are no undesirable changes. Then run the following in your command line from the curriculum folder to commit your progress.

$ git add .
$ git commit -m "finish Games: Supervised Score Tracker exercise"
$ git push

We’re proud to offer our open-source curriculum free of charge for anyone to learn from at their own pace.

We also offer a paid course where you can learn from an instructor alongside a cohort of your peers. We will accept applications for the June-August 2023 cohort soon.

Navigation

Home Report An Issue Games: Supervisor SetupTask