트랙
/
Elixir
Elixir
/
연습 문제
/
RPG 캐릭터 시트
RPG 캐릭터 시트

RPG 캐릭터 시트

학습 연습 문제

소개

IO

IO 모듈은 입출력을 다루는 함수를 제공해요.

출력

문자열을 표준 출력에 쓰려면 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개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.