stattr 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/stattr.rb +134 -104
  2. metadata +2 -2
@@ -4,177 +4,207 @@
4
4
 
5
5
  module Stattr
6
6
 
7
- # How many sides the most common die has - rewrite to fit your game.
7
+ # The Class that defines, in other applications, the "rules" of that game - the stats, the sides of a given die, and so on.
8
8
  #
9
- DICE_SIDES = 6
10
-
11
- # Represents a single instance of the result of a dice roll
12
- #
13
- class DiceRoll
14
-
15
- # @attribute sides [Integer] The number of sides the dice in this roll have.
9
+ class Game
10
+
11
+ # How many sides the generating dice have in this game.
12
+ #
13
+ # @return [Integer]
14
+ #
15
+ def self.dice_sides
16
+ 6
17
+ end #self.dice_sides
18
+
19
+ # The number of dice required to create a stat in this game
20
+ #
21
+ # @return [Integer]
22
+ #
23
+ def self.dice_num
24
+ 3
25
+ end #self.dice_num
26
+
27
+ # The math for generating a stat.
16
28
  #
29
+ # @return [Object]
30
+ #
31
+ def self.make_stat(val=1)
32
+ Stat.new(DiceRoll.new_roll(Game.dice_sides, Game.dice_num))
33
+ end #make_stat
34
+
35
+ # The list of stats for this game.
36
+ #
37
+ # @return [Array]
38
+ #
39
+ def self.stats
40
+ ["str", "con", "wis", "int", "cha", "dex"]
41
+ end #self.stats
42
+ end #Game
43
+
44
+ # Represents a single instance of the result of a dice roll
45
+ #
46
+ class DiceRoll
47
+
48
+ # @attribute sides [Integer] The number of sides the dice in this roll have.
17
49
  # @attribute count [Integer] The number of die being rolled.
18
50
  #
19
51
  attr_accessor :sides, :count
20
-
52
+
21
53
  # New instance of DiceRoll.
22
54
  #
23
55
  # @param [Integer] sides
24
- #
25
56
  # @param [Integer] count
26
- #
27
57
  # @return [Object] DiceRoll object
28
58
  #
29
- def initialize(sides=DICE_SIDES, count=1)
59
+ #def initialize(sides=DICE_SIDES, count=1)
60
+ def initialize(sides=Game.dice_sides, count=Game.dice_num)
30
61
  @sides = sides
31
62
  @count = count
32
63
  end #initialize
33
-
34
- # Roll a new die.
64
+
65
+ # Roll a new die.
35
66
  #
36
67
  # @param [Integer] sides
37
- #
38
68
  # @param [Integer] count
69
+ # @return [Object] DiceRoll object
39
70
  #
40
- # @return [Object] DiceRoll object
41
- #
42
- def self.new_roll(sides = DICE_SIDES, count=1)
43
- # make a new dice object, then roll it.
71
+ def self.new_roll(sides = Game.dice_sides, count=Game.dice_num)
72
+ # make a new dice object, then roll it.
44
73
  new(sides, count).roll
45
74
  end #self.roll
46
-
75
+
47
76
  # From 1 to count, that many [sides] sided die.
48
- #
49
- # @return [Integer] Gives each outcome to Roll.
77
+ #
78
+ # @return [Integer] Gives each outcome to Roll.
50
79
  #
51
80
  def rolls
52
81
  (1..count).map { |d| rand(sides) + 1 }
53
82
  end #rolls
54
-
55
- # Adds the rolls from rolls together.
83
+
84
+ # Adds the rolls from rolls together.
56
85
  #
57
- # @return [Integer] combined rolls
86
+ # @return [Integer] combined rolls
58
87
  #
59
88
  def roll
60
89
  rolls.inject(0) { |total, d| total += d }
61
90
  end #roll
62
91
  end #DiceRoll
63
92
 
64
- # Represents the list of Statistics that a player has.
93
+ # Represents the list of Statistics that a player has.
65
94
  #
66
- class StatList
95
+ class StatList
67
96
 
68
- # A list of all stats. Currently locked into D+D style stats.
97
+ # Creates an attr_accessor for each stat in STAT
69
98
  #
70
- attr_accessor :str, :dex, :cha, :con, :wis, :int
71
-
72
- # Create a new Statlist.
99
+ # @attribute STATS [Integer] any number of Stats.
73
100
  #
74
- # @param [Array] str
75
- #
76
- # @param [Array] dex
77
- #
78
- # @param [Array] cha
101
+ attr_accessor *Game.stats
102
+
103
+ # Creates a new StatList object. each stat in STAT is an attribute, with the result of makestat assigned to it
79
104
  #
80
- # @param [Array] con
105
+ def initialize
106
+ Game.stats.each { |s| instance_variable_set("@#{s}", Game.make_stat) }
107
+ end #initialize
108
+
109
+ # Allow manual setting of stats.
81
110
  #
82
- # @param [Array] wis
111
+ # @param [Attribute] stat
112
+ # @param [Integer] val
83
113
  #
84
- # @param [Array] int
114
+ def set_stat(stat, value)
115
+ send "#{stat}=", Stat.new(value)
116
+ end #set_stat
117
+ end #StatList
118
+
119
+ # Representing a stat in a game.
120
+ #
121
+ class Stat
122
+
123
+ # @attribute val [Integer] The value of the stat
124
+ # @attribute mod [Integer] The Calculated modifier of the stat
85
125
  #
86
- def initialize(str=10, dex=10, cha=10, con=10, wis=10, int=10)
87
- @str = modstat(str)
88
- @dex = modstat(dex)
89
- @cha = modstat(cha)
90
- @con = modstat(con)
91
- @wis = modstat(wis)
92
- @int = modstat(int)
93
- end #initialize
94
-
95
- # Takes a given value of a stat and creates a D+D style modifier.
126
+ attr_accessor :val, :mod
127
+
128
+ def initialize(value)
129
+ @val= value
130
+ @mod= modstat(value)
131
+ end
132
+ # Creates stat/mod array.
96
133
  #
97
- # @return [Array] modlist. [0] is the stat, [1] is the modifier.
134
+ # @return [Integer] modlist. Returns the modifier.
98
135
  #
99
136
  def modstat(r)
100
137
  modr = ((r-10)/2).to_int
101
- modlist = [r, modr]
102
- modlist
103
138
  end #modstat
104
- end #StatList
105
-
106
- # CharacterSheet of a given PlayerCharacter.
107
- #
108
- class CharacterSheet
109
139
 
110
- # @attribute stats [Object] A StatList object
140
+ # makes a Stat/mod combination
141
+ #
142
+ # @return [Array]
111
143
  #
112
- # @attribute name [String] The Player Character's name
144
+ end #Stat
145
+
146
+ # CharacterSheet of a given PlayerCharacter.
147
+ #
148
+ class CharacterSheet
149
+
150
+ # @attribute stats [Object] A StatList object
151
+ # @attribute name [String] The Player Character's name
113
152
  #
114
- attr_accessor :stats, :name
153
+ attr_accessor :stats, :name
115
154
 
116
155
  # new instance of CharacterSheet
156
+ # @param [String] name
117
157
  #
118
- # @param [String] name
119
- #
120
- def initialize(name) # :notnew:
121
- @name = name
122
- # creates StatList object with '10' as a default for each.
123
- @stats = StatList.new(10,10,10,10,10,10)
124
- end #initialize
125
-
126
- # This is how you roll a brand new random character.
127
- #
128
- # @param [String] name
129
- #
130
- # @return [Object] New Charactersheet
131
- #
132
- def self.roll_char(name)
133
- char = CharacterSheet.new(name)
134
- char.stats = StatList.new(
135
- DiceRoll.new_roll(DICE_SIDES, 3),
136
- DiceRoll.new_roll(DICE_SIDES, 3),
137
- DiceRoll.new_roll(DICE_SIDES, 3),
138
- DiceRoll.new_roll(DICE_SIDES, 3),
139
- DiceRoll.new_roll(DICE_SIDES, 3),
140
- DiceRoll.new_roll(DICE_SIDES, 3)
141
- )
142
- char
143
- end # self.roll_char
144
- end #CharacterSheet
145
-
146
- # Player class represents a human, who may have multiple character sheets.
147
- #
148
- class Player
149
-
150
- # @attribute fname [String] The First Name of the Player
151
- #
152
- # @attribute lname [String] The last Name of the Player
158
+ def initialize(name)
159
+ @name = name
160
+ @stats = StatList.new
161
+ end #initialize
162
+
163
+ # This is how you roll a brand new random character.
164
+ #
165
+ # @param [String] name
166
+ # @return [Object] New Charactersheet
167
+ #
168
+ def self.roll_char(name)
169
+ char = CharacterSheet.new(name)
170
+ char.stats = StatList.new
171
+ char
172
+ end # self.roll_char
173
+ end #CharacterSheet
174
+
175
+ # Player class represents a human, who may have multiple character sheets.
153
176
  #
177
+ class Player
178
+
179
+ # @attribute fname [String] The First Name of the Player
180
+ # @attribute lname [String] The last Name of the Player
154
181
  # @attribute characters [Array] An array containing Charactersheet objects
155
182
  #
156
183
  attr_accessor :fname, :lname, :characters
157
-
184
+
158
185
  # Create new Player object
159
186
  #
160
187
  # @param [String] fname
161
- #
162
188
  # @param [String] lname
163
189
  #
164
- def initialize(fname, lname)
190
+ def initialize(fname, lname)
165
191
  @fname = fname
166
- @lname = lname
192
+ @lname = lname
167
193
  @characters = []
168
194
  end #initialize
169
-
170
- # Creates a new randomly generated character associated with Player
195
+
196
+ # Creates a new randomly generated character associated with Player
171
197
  #
172
- # @param [String] name
198
+ # @param [String] name
173
199
  #
174
200
  def new_char(name)
175
201
  new_char = CharacterSheet.roll_char(name)
176
- self.characters << new_char
202
+ self.characters << new_char
177
203
  end #roll_char
178
204
  end #Player
179
-
205
+
206
+ # DM class extends player, fresh for modifying.
207
+ #
208
+ class DM < Player
209
+ end #DM
180
210
  end #Stattr
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stattr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
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-05-24 00:00:00.000000000 Z
12
+ date: 2012-05-25 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Stattr is a Gem that includes a number of useful functions for rolling
15
15
  dice in a game like Dungeons and Dragons.