Class: DMTool::Die
- Inherits:
-
Object
- Object
- DMTool::Die
- Defined in:
- lib/dmtool/die.rb
Instance Attribute Summary collapse
-
#explodes ⇒ Object
(also: #explodes?)
readonly
Returns the value of attribute explodes.
-
#history ⇒ Object
readonly
Returns the value of attribute history.
-
#sides ⇒ Object
readonly
Returns the value of attribute sides.
Instance Method Summary collapse
-
#initialize(sides: 6, explodes: false) ⇒ Die
constructor
A new instance of Die.
- #roll ⇒ Object (also: #roll!)
- #value ⇒ Object
Constructor Details
#initialize(sides: 6, explodes: false) ⇒ Die
Returns a new instance of Die.
4 5 6 7 8 9 |
# File 'lib/dmtool/die.rb', line 4 def initialize(sides: 6, explodes: false) raise ArgumentError.new("Invalid sides: #{sides}") unless sides.is_a?(Fixnum) && sides > 1 @sides = sides @explodes = explodes @history = [] end |
Instance Attribute Details
#explodes ⇒ Object (readonly) Also known as: explodes?
Returns the value of attribute explodes.
2 3 4 |
# File 'lib/dmtool/die.rb', line 2 def explodes @explodes end |
#history ⇒ Object (readonly)
Returns the value of attribute history.
2 3 4 |
# File 'lib/dmtool/die.rb', line 2 def history @history end |
#sides ⇒ Object (readonly)
Returns the value of attribute sides.
2 3 4 |
# File 'lib/dmtool/die.rb', line 2 def sides @sides end |
Instance Method Details
#roll ⇒ Object Also known as: roll!
15 16 17 18 19 20 |
# File 'lib/dmtool/die.rb', line 15 def roll result = rand_roll result += rand_roll while explodes? && result % sides == 0 history.push result result end |
#value ⇒ Object
11 12 13 |
# File 'lib/dmtool/die.rb', line 11 def value @history.last end |