0

我正在使用 Ruby 制作一个简单的命令行游戏,并且在没有数据库/HTTP 动态的情况下无法保存一些信息。

例如,假设我必须做一个三明治(在游戏中)。我看到了一系列可供选择的成分,如下所示:

[1] Carrot
[2] Banana
[3] Cheese
[4] Tomato

我无法硬编码数字和成分之间的直接对应关系,因为在此之前,我被禁止随机使用几种成分(因此完整的成分数组长了两个)。而且我不想提供一个编号的列表,[1] [2] [4] [6]因为它会让人感到困惑。

我现在正在做的是硬编码一个字母和一个项目之间的直接对应关系,所以对于Bananapress B,对于CheesepressC等等。但这并不理想,特别是因为这是整个游戏中使用的一种模式,并且在某些情况下它会变得非常不方便,对我和玩家来说都是如此。

那么,有没有更好的方法让我做到这一点?如何将输入与随机生成的列表项相关联,并保存该信息以供以后使用)?

4

1 回答 1

0

这是我解决它的方法:

Mario Zannone 的评论让我意识到我可以index将数组元素id

所以这是我想出的代码来利用它:

(0...@ingredients.length).each do |i|
    puts "[#{i+1}] #{@ingredients[i]}"
end

这样我现在在元素和输入之间有了直接的对应关系:

choice = gets.chomp.to_i - 1
@selected_ingredient = @ingredients[choice]
于 2015-09-04T10:08:04.077 回答