Class: RpgLib::DiceRoller
- Inherits:
-
Object
- Object
- RpgLib::DiceRoller
- Includes:
- Singleton
- Defined in:
- lib/rpg_lib/dice_roller.rb
Overview
DiceRoller
Constant Summary collapse
- DICE_REGEXP =
/(\d*)d(\d+)((dl)(\d*)|(dh)(\d*))?/
Instance Method Summary collapse
- #random_value_in_range(range) ⇒ Object
- #roll(dice) ⇒ Object
- #roll_and_ignore(dice, ignored_values) ⇒ Object
- #roll_dice(roll_descriptor) ⇒ Object
Instance Method Details
#random_value_in_range(range) ⇒ Object
29 30 31 |
# File 'lib/rpg_lib/dice_roller.rb', line 29 def random_value_in_range(range) rand(range) end |
#roll(dice) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rpg_lib/dice_roller.rb', line 40 def roll(dice) local_dice = dice.dup loop do m = local_dice.downcase.match(DICE_REGEXP) break if m.nil? rolled_value = roll_dice(RollDescriptor.new(m)) local_dice[m.begin(0)...m.end(0)] = rolled_value.to_s end eval(local_dice) end |
#roll_and_ignore(dice, ignored_values) ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/rpg_lib/dice_roller.rb', line 51 def roll_and_ignore(dice, ignored_values) rolled_value = nil loop do rolled_value = roll(dice) break unless ignored_values.include?(rolled_value) end rolled_value end |
#roll_dice(roll_descriptor) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/rpg_lib/dice_roller.rb', line 33 def roll_dice(roll_descriptor) rolled_values = roll_all_dice_from_descriptor(roll_descriptor) drop_lowest(rolled_values, roll_descriptor) drop_highest(rolled_values, roll_descriptor) total(rolled_values) end |