Percursos
/
Elixir
Elixir
/
Exercícios
/
Ficha de personagem de RPG
Ficha de personagem de RPG

Ficha de personagem de RPG

Exercício de aprendizagem

Introdução

IO

As funções para lidar com entrada e saída são fornecidas pelo módulo IO.

Saída

Para escrever uma string na saída padrão, usa IO.puts. O IO.puts acrescenta sempre uma nova linha no fim da string. Se não quiseres esse comportamento, usa antes o IO.write. Ambas as funções devolvem o átomo :ok se forem bem-sucedidas.

IO.puts("Hi!")
# > Hi!
# => :ok

O IO.puts é útil para escrever strings, mas pouco mais. Se precisares de uma ferramenta de depuração que te permita escrever qualquer valor na saída padrão, usa antes o IO.inspect. O IO.inspect devolve o valor que lhe foi passado, sem alterações, por isso pode ser inserido em qualquer ponto do teu código. Também aceita muitas opções, por exemplo :label, que te permitem distingui-lo de outras chamadas a IO.inspect.

Entrada

Para ler uma linha da entrada padrão, usa IO.gets. O IO.gets aceita um argumento: uma string que será impressa como um pedido de entrada. O IO.gets não acrescenta uma nova linha depois do pedido; inclui-a tu próprio se precisares.

IO.gets("What's your name?\n")
# > What's your name?
# < Mary
# => "Mary\n"

Instruções

Tu e os teus amigos adoram jogar jogos de interpretação de papel e lápis, mas reparaste que é difícil convencer pessoas novas a juntar-se ao teu grupo. Muitas vezes têm dificuldade em criar a personagem. Não sabem por onde começar. Para ajudar os novos jogadores, decidiste escrever um pequeno programa que os guie ao longo do processo.

1. Dá as boas-vindas ao novo jogador

Implementa a função RPG.CharacterSheet.welcome/0. Deve imprimir uma mensagem de boas-vindas e devolver :ok.

RPG.CharacterSheet.welcome()
# > Welcome! Let's fill out your character sheet together.
# => :ok

2. Pergunta o nome da personagem

Implementa a função RPG.CharacterSheet.ask_name/0. Deve imprimir uma pergunta, esperar por uma resposta e devolver a resposta sem espaços em branco no início e no fim.

RPG.CharacterSheet.ask_name()
# > What is your character's name?
# < Mathilde
# => "Mathilde"

3. Pergunta a classe da personagem

Implementa a função RPG.CharacterSheet.ask_class/0. Deve imprimir uma pergunta, esperar por uma resposta e devolver a resposta sem espaços em branco no início e no fim.

RPG.CharacterSheet.ask_class()
# > What is your character's class?
# < healer
# => "healer"

4. Pergunta o nível da personagem

Implementa a função RPG.CharacterSheet.ask_level/0. Deve imprimir uma pergunta, esperar por uma resposta e devolver a resposta como um número inteiro.

RPG.CharacterSheet.ask_level()
# > What is your character's level?
# < 2
# => 2

5. Combina os passos anteriores num só

Implementa a função RPG.CharacterSheet.run/0. Deve dar as boas-vindas ao novo jogador, perguntar o nome, a classe e o nível da personagem e devolver a ficha da personagem como um mapa. Deve também imprimir o mapa com a etiqueta "Your character".

RPG.CharacterSheet.run()
# > Welcome! Let's fill out your character sheet together.
# > What is your character's name?
# < Mathilde
# > What is your character's class?
# < healer
# > What is your character's level?
# < 2
# > Your character: %{class: "healer", level: 2, name: "Mathilde"}
# => %{class: "healer", level: 2, name: "Mathilde"}
Editar via GitHub A ligação abre numa nova janela ou separador
Elixir Exercism

Estás pronto para começar Ficha de personagem de RPG?

Inscreve-te no Exercism para aprenderes e dominares Elixir com 58 conceitos168 exercícios, e mentoria humana real, tudo grátis.