2014-12-11 2 views
0

텍스트 게임을 만들고 있고 마지막 문으로 이동하면 잠겨 있습니다. 3 개의 항목 (배열의 문자열)이 필요합니다.루비 - 배열의 여러 위치에 여러 값이 표시되는지 확인합니다.

그래서 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 : [ "검", "단검"]}'그러면 inventory [: keys] == array2'처럼 간단 할 것입니다. . 키, 무기 및 더 많은 항목과 같은 항목을 분류하여 게임 기능에 추가 할 수도 있습니다. – engineersmnky

+0

@engineersmnky - 좋은 생각! 나는 학습 경로의 해쉬 부분에 도달하지 않았으므로, 확실히 확인해 볼 것이므로, 더 좋은 방법이라고 생각합니다. 또한 이야기에서 무기 부분을 꺼 냈으므로 아이템에만 의존합니다. – jimps

답변

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

관련 문제