2014-12-11 54 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