下一步是向玩家显示英雄列表。显示游戏界面和显示英雄列表是两种不同的操作,我们将学习如何将它们分开。首先,在lib/dungeon_crawl文件夹中创建heroes.ex文件来创建英雄列表,目录结构如下所示:
在heroes.ex中创建以下模块:
我们用DungeonCrawl.Character结构体制作了一个英雄列表。alias(别名)指令创建了一个快捷方式,允许我们用%Character来引用结构体。这里描述的英雄只是示例,你可以创建自己的英雄。开心就好!
为了显示英雄列表,我们需要创建一个与玩家交互的入口。我们将创建一个用于存储CLI代码的文件夹和一个启动和结束游戏的main.ex文件。创建以下文件和目录结构:
目前,main.ex只包含一条介绍游戏的欢迎消息:
DungeonCrawl.CLI.Main将掌管游戏流程。让我们看一下它的实现细节。Mix.Shell.IO引入了与终端交互的功能。例如,它的yes?/1函数可以从玩家那里接收肯定或否定的答案。我们使用info和别名Shell来使用打印消息,以免输入Mix.Shell.IO的全名。现在我们要调用上一节创建的Mix任务中的start_game/0 函数:(www.xing528.com)
然后使用mix start运行游戏,查看欢迎消息。
现在该列出所有英雄了。我们在模块DungeonCrawl.CLI.HeroChoice中创建这个函数,该模块将位于lib/dungeon_crawl/cli/hero_choice.ex中。
我们再次使用Mix.Shell.IO工具来处理shell。这次我们使用的是cmd/1。它允许我们将终端命令发送到当前的shell。向玩家显示英雄列表之前要清屏。然后我们获取英雄列表,映射他们的名称,并用编号列表显示出来。使用Enum.with_index函数生成包含英雄名称及其对应索引号的元组列表。现在让我们在DungeonCrawl.CLI.Main函数中调用这个模块:
通过mix start运行,看看效果。
我们将CLI交互函数放到了另一个命名空间,这样的代码更易于维护。下一步是请玩家选择一个英雄角色。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。