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