Sha256: bcc8da965c83611650263946ed53730b84bc9c17b9d86b8c3d79361127e50650
Contents?: true
Size: 1.46 KB
Versions: 5
Compression:
Stored size: 1.46 KB
Contents
module Ludy # dices, e.g., 4d6, 2d20, etc. class Dices # dices amounts of this dices; faces of this kind of dice attr_reader :amounts, :faces # the default dice is 1d20 def initialize amounts = 1, faces = 20 @amounts = amounts @faces = faces end # roll the dices def roll @amounts.roll @faces end # the possible min value these dices would roll out. def min; @amounts; end # the possible max value these dices would roll out. def max; @amounts*@faces; end end # a dice set could contain 4d6 + 2d20 and more dices. class DiceSet # the min and max possible value of this dice set. attr_reader :min, :max def initialize *args @diceset = args @min = @max = 0 @diceset.each{ |i| @min += i.min @max += i.max } end # roll the dice set def roll result = 0 @diceset.each { |i| result += i.roll } result end # put dices into this dice set def << dices @diceset << dices @min += dices.min @max += dices.max self end end end class Numeric # roll dices (with amounts equal to self.to_i) with faces = ? def roll faces = 20 return nil unless self > 0 && self.integer? && faces > 0 && faces.integer? result = 0 1.step(self){ |i| result += rand(faces) + 1 } result end # create dices with faces = ? def dices faces = 20 Ludy::Dices.new self, faces end end
Version data entries
5 entries across 5 versions & 2 rubygems
Version | Path |
---|---|
godfat-ludy-0.1.13 | lib/ludy/dices.rb |
ludy-0.1.15 | lib/ludy/dices.rb |
ludy-0.1.10 | lib/ludy/dices.rb |
ludy-0.1.11 | lib/ludy/dices.rb |
ludy-0.1.13 | lib/ludy/dices.rb |