Les fonctions de gestion des entrées et sorties sont fournies par le module IO.
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.
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"
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.
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
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"
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"
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
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"}
Inscris-toi sur Exercism pour apprendre et maîtriser Elixir avec 58 concepts168 exercices, et un vrai mentorat humain, le tout gratuitement.