defmodule PentoWeb.WrongLive do use PentoWeb, :live_view @winning_score 15 def mount(_params, _session, socket) do socket = socket |> assign(score: 0) |> assign(message: "Make a guess:") |> assign(number: random_number()) {:ok, socket} end def render(assigns) do ~H"""

Your score: <%= @score %>

<%= @message %>


<%= if @score >= winning_score() do %> <.link href={~p"/guess"} class="bg-blue-500 hover:bg-blue-700 text-white text-center font-bold py-2 px-4 border border-blue-700 rounded m-1" > Play again! <% else %> <%= for n <- 1..10 do %> <.link class="bg-blue-500 hover:bg-blue-700 text-white text-center font-bold py-2 px-4 border border-blue-700 rounded m-1" phx-click="guess" phx-value-number={n} > <%= n %> <% end %> <% end %>

""" end defp random_number() do :rand.uniform(10) end defp winning_score(), do: @winning_score def handle_event("guess", %{"number" => guess}, socket) do number = socket.assigns.number |> to_string() socket = if number == guess do correct_guess(guess, socket) else wrong_guess(guess, socket) end {:noreply, socket} end defp correct_guess(guess, socket) do score = socket.assigns.score + 8 message = if score >= @winning_score do "Your guess: #{guess}. Correct. You won!" else "Your guess: #{guess}. Correct. Guess the next number." end socket |> assign(message: message) |> assign(score: score) |> assign(number: random_number()) end defp wrong_guess(guess, socket) do message = "Your guess: #{guess}. Wrong. Guess again." score = socket.assigns.score - 1 socket |> assign(message: message) |> assign(score: score) end end