class Dice
Attributes
num_of_dice[RW]
sides[RW]
Public Class Methods
max_dice=( value )
click to toggle source
# File lib/lib/dice.rb, line 45 def self.max_dice=( value ) @@max_dice = value end
max_sides=( value )
click to toggle source
# File lib/lib/dice.rb, line 49 def self.max_sides=( value ) @@max_sides = value end
new(num_of_dice,sides, options={})
click to toggle source
# File lib/lib/dice.rb, line 9 def initialize(num_of_dice,sides, options={}) options = filter_options(options) raise ArgumentError, "Your sides exceeds the maximum number of sides allowed" if @@max_sides && sides > @@max_sides raise ArgumentError, "Your dice exceeds the maximum dice allowed" if @@max_dice && num_of_dice > @@max_dice @num_of_dice = num_of_dice @sides = sides end
parse(string)
click to toggle source
Parses a dice string and returns a dice object More documentation to come later
# File lib/lib/dice.rb, line 34 def self.parse(string) dice_regex = /(?<num_of_dice>\d*)d(?<num_of_sides>\d+)/ dice = dice_regex.match(string) raise ArgumentError, "unable to parse dice string" if dice.nil? num_of_dice = dice[:num_of_dice].to_i num_of_dice = 1 if num_of_dice == 0 num_of_sides = dice[:num_of_sides].to_i dice = Dice.new(num_of_dice,num_of_sides) return dice end
Public Instance Methods
reroll()
click to toggle source
# File lib/lib/dice.rb, line 26 def reroll @results = nil return results end
results()
click to toggle source
# File lib/lib/dice.rb, line 17 def results return @results.inject {|sum,x| sum+=x} if @results @results = [] @num_of_dice.times do @results << rand(sides) + 1 end return @results.inject {|sum,x| sum+=x} end
Private Instance Methods
filter_options(options)
click to toggle source
# File lib/lib/dice.rb, line 55 def filter_options(options) defaults = {:highest=>nil} options.each do |key,vale| raise ArgumentError, "#{key} is not a valid option" unless defaults.has_key? key end return defaults.merge(options) end