Sha256: 31af3a4ead9736bd1d471ec89e3801b2eecb2ff20718177e435e14f2fb692dc8
Contents?: true
Size: 1.01 KB
Versions: 1
Compression:
Stored size: 1.01 KB
Contents
require_relative 'die' require_relative 'ruleset/base_ruleset' class Roll include Enumerable attr_reader :dice def initialize(num_of_dice, options = {}) @options = default_options.merge(options) @rand_generator = @options[:rand_generator] @dice = roll(num_of_dice) unless @options[:ruleset].nil? self.extend(@options[:ruleset]) end end def size @dice.count end def ==(other) @dice == other end private def each @dice.each { |die| yield die } end def default_options { :die_size => 10, :rand_generator => Random, :ruleset => Ruleset::BaseRuleset} end def roll(number) number.times.collect { roll_die } end def roll_die Die.new(@rand_generator.rand(@options[:die_size])) end def each_die_that_matches(values) @dice.map! do |die| last_die = die while values.any? { |value| last_die == value } die, last_die = yield(die) last_die = (last_die.nil? && die) || last_die end die end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
diceroller-0.0.3 | lib/roller/roll.rb |