Home > Software engineering >  New with ruby. Id and quantity of item
New with ruby. Id and quantity of item

Time:04-18

I'm new to ruby, and I'm trying to edit others scripts made in ruby to figure out how it works. Now, I was struggling for days with this one. I have a script with the next command:

def has_card_in_deck?(id)
  actor = $game_actors[$game_variables[27]]
    for card in actor.deck
      return true if card.id == id
    end
  return false
end

This return me if there's a card with the said ID in the actor deck. It works perfectly. But I tried to create a second command with the almost exact question, but instead of return me if there's a card with certain ID, I want to confirm if there's 2 or more copies of that ID card. I can't figure out how to ask the quantity of the object "card". I tried putting (* 2) with the ID, but of course, this will just ask if there's a card with the double value of the id input.

CodePudding user response:

Use #count in of Array. For example,

nums = [1,2,2,3,4,5]
nums.count { |num| num == 2 }
=> 2
nums.count { |num| num >= 3 }
=> 3

So you can write a has_at_least_2_cards?(id)

def has_at_least_2_cards?(id)
  actor = $game_actors[$game_variables[27]]
  actor.deck.count { |card| card.id == id } >= 2
end
  •  Tags:  
  • ruby
  • Related