轨道
/
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,借助 58 个概念168 个练习 和真人导师指导,学习并掌握 Elixir,全部免费。