rollr 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/rollr.rb +43 -7
  2. metadata +2 -2
data/lib/rollr.rb CHANGED
@@ -1,5 +1,11 @@
1
1
  # Rollr Simulates rolling dice of different size.
2
2
  #
3
+ # In its most recent version, it also supports a kind of primitive logging,
4
+ # which can track the rolls made to the die over time, as well as the individual
5
+ # results of rolls within a pool of rolls (so, for instance, if you rolled 20
6
+ # 6 six sided die, you could see the result of each individual roll of each
7
+ # die.
8
+ #
3
9
  # @author Alex Jarvis
4
10
 
5
11
  require 'rubygems'
@@ -7,36 +13,66 @@ require 'rubygems'
7
13
  module Rollr
8
14
 
9
15
 
10
- # Represents a single instance of the result of a die
16
+ # Represents a single instance of a die
11
17
  #
12
18
  class Die
13
19
 
14
20
 
15
21
  # @attribute sides [Integer] The number of sides the die has
16
22
  #
17
- attr_accessor :sides
23
+ attr_accessor :sides, :rolls
18
24
 
19
- # New instance of Dice.
25
+ # New instance of Die
20
26
  #
21
27
  # @param [Integer] sides
22
28
  # @return [Object] Die object
23
29
  #
24
30
  def initialize(sides)
25
31
  @sides = sides
32
+ @rolls = []
26
33
  end #initialize
27
34
 
28
- # Roll a new die.
35
+ # Roll a new die. This creates a DiceRoll Object, and adds it to the array of rolls from this Die.
36
+ # Then, return the total of that Roll.
29
37
  #
30
38
  # @param [Integer] count
31
- # @return [Object] integer
39
+ # @return [Integer] The result of the rolls, by way of a DiceRoll object.
32
40
  #
33
- def roll(count)
34
- (1..count).map { |d| rand(self.sides) + 1 }.inject(0) { |total, d| total += d }
41
+ def roll(count=1)
42
+ individual_rolls = (1..count).map { |d| rand(self.sides) + 1 }
43
+ @rolls << DiceRoll.new(individual_rolls, self.sides, count)
44
+ @rolls.last.total
35
45
  end #roll
36
46
 
37
47
  end #Die
38
48
 
49
+ #DiceRoll is a class that holds information regarding a single instance of a rolled die.
50
+ #
51
+ class DiceRoll
52
+
53
+ # @attribute each_side [Array] the individual result of a single roll of a die.
54
+ # @attribute total [Integer] the combined total of the individual rolls
55
+ # @attribute dice_sides [Integer] the number of sides the rolled die had
56
+ # @attribute number_of_dice [Integer] the number of dice rolled.
57
+ #
58
+ attr_accessor :each_die, :total, :dice_sides, :number_of_dice
59
+
60
+
61
+ # New instance of DiceRoll
62
+ #
63
+ # @param [Array] individual
64
+ # @param [Integer] sides
65
+ # @param [Integer] number
66
+ # @return [Object] Die object
67
+ #
68
+ def initialize(individual, sides, number)
69
+ @each_die = individual
70
+ @dice_sides = sides
71
+ @number_of_dice = number
72
+ @total = individual.inject(0) { |total, d| total += d }
73
+ end #initialize
39
74
 
75
+ end #DiceRoll
40
76
  #Die Constants
41
77
 
42
78
  D3 = Die.new(3)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rollr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-09 00:00:00.000000000 Z
12
+ date: 2012-06-12 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Rollr is a Gem that provides useful functions to simulate the Rolling
15
15
  of Dice... because we weren't social enough as is.