Parcours
/
Elixir
Elixir
/
Exercices
/
Fiche de personnage RPG
Fiche de personnage RPG

Fiche de personnage RPG

Exercice d'apprentissage

Introduction

IO

Les fonctions de gestion des entrées et sorties sont fournies par le module IO.

Sortie

Pour écrire une string sur la sortie standard, utilise IO.puts. IO.puts ajoute toujours un saut de ligne à la fin de la string. Si tu ne veux pas de ce comportement, utilise plutôt IO.write. Les deux fonctions renvoient l'atome :ok si elles réussissent.

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

IO.puts est utile pour écrire des strings, mais pas pour grand-chose d'autre. Si tu as besoin d'un outil de débogage qui te permette d'écrire n'importe quelle valeur sur la sortie standard, utilise plutôt IO.inspect. IO.inspect renvoie la valeur qu'on lui a passée sans la modifier, ce qui permet de l'insérer à n'importe quel endroit du code. Elle accepte aussi de nombreuses options, par exemple :label, qui te permettront de la distinguer des autres appels à IO.inspect.

Entrée

Pour lire une ligne depuis l'entrée standard, utilise IO.gets. IO.gets prend un seul argument : une string qu'elle affiche comme invite de saisie. IO.gets n'ajoute pas de saut de ligne après l'invite, ajoute-le toi-même si tu en as besoin.

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

Instructions

Toi et tes amis adorez jouer à des jeux de rôle sur table, mais tu as remarqué qu'il est difficile d'attirer de nouvelles personnes dans le groupe. Elles ont souvent du mal à créer leur personnage. Elles ne savent pas par où commencer. Pour aider les nouveaux joueurs, tu as décidé d'écrire un petit programme qui les guidera tout au long du processus.

1. Accueille le nouveau joueur

Implémente la fonction RPG.CharacterSheet.welcome/0. Elle doit afficher un message de bienvenue et renvoyer :ok.

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

2. Demande le nom du personnage

Implémente la fonction RPG.CharacterSheet.ask_name/0. Elle doit afficher une question, attendre une réponse et renvoyer la réponse sans les espaces au début et à la fin.

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

3. Demande la classe du personnage

Implémente la fonction RPG.CharacterSheet.ask_class/0. Elle doit afficher une question, attendre une réponse et renvoyer la réponse sans les espaces au début et à la fin.

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

4. Demande le niveau du personnage

Implémente la fonction RPG.CharacterSheet.ask_level/0. Elle doit afficher une question, attendre une réponse et renvoyer la réponse sous forme d'entier.

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

5. Combine les étapes précédentes en une seule

Implémente la fonction RPG.CharacterSheet.run/0. Elle doit accueillir le nouveau joueur, demander le nom, la classe et le niveau du personnage, puis renvoyer la fiche de personnage sous forme de map. Elle doit aussi afficher la map avec le libellé « 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"}
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Elixir Exercism

Prêt à commencer Fiche de personnage RPG ?

Inscris-toi sur Exercism pour apprendre et maîtriser Elixir avec 58 concepts168 exercices, et un vrai mentorat humain, le tout gratuitement.