2014-12-11 56 views
0

我在制作文字游戏,当您到达最后一扇门时,它会被锁定。您需要三个项目(数组中的字符串)才能通过。红宝石 - 检查数组中是否有多个值出现

所以我试图做一个if语句,看看你的库存(它可以携带三个项目,以及其他)包含这些特定的三个项目位于任何地方。

array1 = ["key1", "key2", "key3", "sword", "dagger"] 
array2 = ["key1", "key2", "key3"] 

if array1.include? array2 
    puts "it does" 
else 
    puts "it doesn't" 
end 

我已经试过类似的东西使用任何,包括但我不能拿出上我会怎么做这是我的测试中表现出意想不到的效果的简单解决方案。

谢谢。

+0

@CarySwoveland给你一个很好的答案,但你有没有考虑存储在'Hash'例如库存'inventory = {keys:[“key1”,“key2”,“key3”],weapons:[“sword”,“dagger”]}'那么就像'inventory [:keys] == array2'一样简单。通过分类键,武器和更多的物品,这也会增加游戏功能。 – engineersmnky 2014-12-11 18:19:30

+0

@engineersmnky - 好主意!我还没有到达学习路径的哈希部分,所以我一定会检查出来,这似乎是一个更好的方法。另外,我在故事中说,我拿出了武器的一部分,所以它完全依赖于物品。 – jimps 2014-12-11 23:39:20

回答

3

您可以使用数组路口:

array1 = ["key1", "key2", "key3", "sword", "dagger"] 
array2 = ["key1", "key2", "key3"] 

puts (array1 & array2 == array2) ? "it does" : "it doesn't" 
    #=> "it does" 

array2 = ["key1", "key2", "cat"] 
puts (array1 & array2 == array2) ? "it does" : "it doesn't" 
    #=> "it doesn't" 

或区别:

puts (array2 - array1).empty? ? "it does" : "it doesn't" 
+0

谢谢队友,我用这个方法并且实现了它。现在他们可以通过这些物品通过门,但如果他们不这样做就会被拒绝。另外我有更多的阵列工作要做:) – jimps 2014-12-11 06:35:55