Class: DMTool::Die

Inherits:
Object
  • Object
show all
Defined in:
lib/dmtool/die.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sides: 6, explodes: false) ⇒ Die

Returns a new instance of Die.

Raises:

  • (ArgumentError)


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

#explodesObject (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

#historyObject (readonly)

Returns the value of attribute history.



2
3
4
# File 'lib/dmtool/die.rb', line 2

def history
  @history
end

#sidesObject (readonly)

Returns the value of attribute sides.



2
3
4
# File 'lib/dmtool/die.rb', line 2

def sides
  @sides
end

Instance Method Details

#rollObject 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

#valueObject



11
12
13
# File 'lib/dmtool/die.rb', line 11

def value
  @history.last
end