Треки
/
Elixir
Elixir
/
Вправи
/
Аркуш персонажа RPG
Аркуш персонажа RPG

Аркуш персонажа RPG

Навчальна вправа

Вступ

IO

Функції для обробки введення та виведення надає модуль IO.

Виведення

Щоб записати рядок тексту (англ. string) у стандартний вивід, скористаймося функцією IO.puts. IO.puts завжди додає новий рядок у кінці рядка тексту. Якщо така поведінка не потрібна, скористаймося функцією IO.write. Обидві функції в разі успіху повертають атом :ok.

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

IO.puts стає в пригоді для запису рядків тексту, але не для чогось іншого. Якщо нам потрібен інструмент для налагодження, який дасть змогу записати будь-яке значення у стандартний вивід, скористаймося функцією IO.inspect. IO.inspect повертає передане йому значення без змін, тож його можна вставити в будь-якому місці коду. Він також приймає багато опцій, наприклад :label, які дають змогу відрізнити його від інших викликів IO.inspect.

Введення

Щоб прочитати рядок зі стандартного введення, скористаймося функцією IO.gets. IO.gets приймає один аргумент: рядок тексту, який буде надрукований як запрошення до введення. IO.gets не додає нового рядка після запрошення; додаймо його самі, якщо потрібно.

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

Вказівки

Ми з друзями любимо грати в настільні рольові ігри, але помітили, що нових людей складно залучити до нашої групи. Їм часто важко дається створення персонажа. Вони не знають, з чого почати. Щоб допомогти новачкам, ми вирішили написати невеличку програму, яка проведе їх через цей процес.

1. Привітаймо нового гравця

Реалізуйте функцію RPG.CharacterSheet.welcome/0. Вона повинна вивести вітальне повідомлення й повернути :ok.

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

2. Запитаймо імʼя персонажа

Реалізуйте функцію RPG.CharacterSheet.ask_name/0. Вона повинна вивести запитання, дочекатися відповіді й повернути відповідь без пробільних символів на початку й у кінці.

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

3. Запитаймо клас персонажа

Реалізуйте функцію RPG.CharacterSheet.ask_class/0. Вона повинна вивести запитання, дочекатися відповіді й повернути відповідь без пробільних символів на початку й у кінці.

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

4. Запитаймо рівень персонажа

Реалізуйте функцію RPG.CharacterSheet.ask_level/0. Вона повинна вивести запитання, дочекатися відповіді й повернути відповідь як ціле число.

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

5. Поєднаймо попередні кроки в один

Реалізуйте функцію RPG.CharacterSheet.run/0. Вона повинна привітати нового гравця, запитати імʼя, клас і рівень персонажа, а також повернути аркуш персонажа у вигляді мапи. Крім того, вона повинна вивести мапу з підписом «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"}
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Elixir Exercism

Час розпочати Аркуш персонажа RPG?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.