studio_game_secor 1.0.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 462b5dc487f674c4d8b377c824a25ccff9e1f450
4
+ data.tar.gz: f0325f4da32c3eb475d011c16c1d7c0187ef8bca
5
+ SHA512:
6
+ metadata.gz: b4e9b57fa43ca1df2f433c53333fbc4e9b2168d530b9130c13ec5baf7e6a5edff02e148592c6c9c6ea71841c7f1afef5c2f33b1c7d5ab7d8cd27135d83de669b
7
+ data.tar.gz: b0b9c2dd0acc55ba94b1fe5dbb601042457d287e4eec9c43e4ab252a3545d92a76830c957b021dcc2f7482c341befcb3cc8864935ca2edc2f22e40a488ba0467
data/LICENSE ADDED
@@ -0,0 +1,3 @@
1
+ All course material, including videos, slides, and source code, is copyrighted and licensed for individual use only. You may make copies for your own personal use (e.g. on your laptop, on your iPad, on your backup drive). However, you may not transfer ownership or share the material with other people. We make no guarantees that the source code is fit for any purpose. Course material may not be used to create training material, courses, books, and the like. Please support us and our instructors by encouraging others to purchase their own copies. Thank you!
2
+
3
+ Copyright © 2005–2015, The Pragmatic Studio. All Rights Reserved.
data/README ADDED
@@ -0,0 +1 @@
1
+ I took an online course from Pragmatic Studio and built this game that takes multiple players and they randomly get w00ted or blammed and randomly accumulate treasure.
data/bin/players.csv ADDED
@@ -0,0 +1,3 @@
1
+ Alvin,100
2
+ Simon,60
3
+ Theo,125
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/studio_game_secor/player'
4
+ require_relative '../lib/studio_game_secor/game'
5
+ require_relative '../lib/studio_game_secor/clumsy_player'
6
+ require_relative '../lib/studio_game_secor/berserk_player'
7
+
8
+ # player1 = Player.new("moe")
9
+ # player2 = Player.new("larry", 60)
10
+ # player3 = Player.new("curly", 125)
11
+
12
+ knuckleheads = StudioGame::Game.new("Knuckleheads")
13
+ default_player_file = File.join(File.dirname(__FILE__), "players.csv")
14
+ knuckleheads.load_players(ARGV.shift || default_player_file)
15
+
16
+ # knuckleheads.add_player(player1)
17
+ # knuckleheads.add_player(player2)
18
+ # knuckleheads.add_player(player3)
19
+
20
+ # knuckleheads.play(10) do
21
+ # knuckleheads.total_points >= 2000
22
+ # end
23
+
24
+ klutz = StudioGame::ClumsyPlayer.new("klutz", 105)
25
+ knuckleheads.add_player(klutz)
26
+
27
+ berserker = StudioGame::BerserkPlayer.new("berserker", 50)
28
+ knuckleheads.add_player(berserker)
29
+
30
+ loop do
31
+ puts "\nHow many game rounds? ('quit' to exit)"
32
+ answer = gets.chomp.downcase
33
+ case answer
34
+ when /^\d+$/
35
+ knuckleheads.play(Integer(answer))
36
+ when 'quit', 'exit'
37
+ knuckleheads.print_stats
38
+ break
39
+ else
40
+ puts "Please enter a number or 'quit'."
41
+ end
42
+ end
43
+
44
+ knuckleheads.save_high_scores
@@ -0,0 +1,7 @@
1
+ module StudioGame
2
+ module Auditable
3
+ def audit
4
+ puts "Rolled a #{self.number} (#{self.class})"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,35 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+ class BerserkPlayer < Player
5
+ def initialize(name, health=100)
6
+ super(name, health)
7
+ @w00t_count = 0
8
+ end
9
+
10
+ def berserk?
11
+ @w00t_count > 5
12
+ end
13
+
14
+ def w00t
15
+ super
16
+ @w00t_count +=1
17
+ puts "#{@name} is berserk!" if berserk?
18
+ end
19
+
20
+ def blam
21
+ if berserk?
22
+ w00t
23
+ else
24
+ super
25
+ end
26
+ end
27
+ end
28
+
29
+ if __FILE__ == $0
30
+ berserker = BerserkPlayer.new("berserker", 50)
31
+ 6.times { berserker.w00t }
32
+ 2.times { berserker.blam }
33
+ puts berserker.health
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+ class ClumsyPlayer < Player
5
+ attr_reader :boost_factor
6
+ def initialize(name, health=100, boost_factor=1)
7
+ super(name, health)
8
+ @boost_factor = boost_factor
9
+ end
10
+
11
+ def found_treasure(treasure)
12
+ super(Treasure.new(treasure.name, treasure.points / 2.0))
13
+ end
14
+
15
+ def w00t
16
+ @boost_factor.times { super }
17
+ end
18
+ end
19
+
20
+ if __FILE__ == $0
21
+ clumsy = ClumsyPlayer.new("klutz")
22
+
23
+ hammer = Treasure.new(:hammer, 50)
24
+ clumsy.found_treasure(hammer)
25
+ clumsy.found_treasure(hammer)
26
+ clumsy.found_treasure(hammer)
27
+
28
+ crowbar = Treasure.new(:crowbar, 400)
29
+ clumsy.found_treasure(crowbar)
30
+
31
+ clumsy.each_found_treasure do |treasure|
32
+ puts "#{treasure.points} total #{treasure.name} points"
33
+ end
34
+ puts "#{clumsy.points} grand total points"
35
+ end
36
+ end
@@ -0,0 +1,19 @@
1
+ require_relative 'auditable'
2
+
3
+ module StudioGame
4
+ class Die
5
+ include Auditable
6
+ attr_reader :number
7
+
8
+ def initialize
9
+ roll
10
+ end
11
+
12
+ def roll
13
+ @number = rand(1..6)
14
+ audit
15
+ @number
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,86 @@
1
+ require_relative 'game_turn'
2
+ require_relative 'treasure_trove'
3
+ require_relative 'player'
4
+
5
+ module StudioGame
6
+ class Game
7
+ attr_reader :title
8
+ def initialize(title)
9
+ @title = title
10
+ @players = []
11
+ end
12
+
13
+ def load_players(from_file)
14
+ File.readlines(from_file).each do |line|
15
+ add_player(Player.from_csv(line))
16
+ end
17
+ end
18
+
19
+ def add_player(player)
20
+ @players.push(player)
21
+ end
22
+
23
+ def play(rounds)
24
+ puts "There are #{@players.size} players in #{@title}: "
25
+ puts @players
26
+
27
+ treasures = TreasureTrove::TREASURES
28
+ puts "\nThere are #{treasures.size} treasures to be found:"
29
+ treasures.each do |t|
30
+ puts "A #{t.name} is worth #{t.points} points."
31
+ end
32
+
33
+ 1.upto(rounds) do |round|
34
+ if block_given?
35
+ break if yield
36
+ end
37
+ puts "\nRound #{round}:"
38
+ @players.each do |player|
39
+ GameTurn.take_turn(player)
40
+ # puts player
41
+ end
42
+ end
43
+ end
44
+
45
+ def print_name_and_health(player)
46
+ puts "#{player.name} (#{player.health})"
47
+ end
48
+
49
+ def total_points
50
+ @players.reduce(0) { |sum, player| sum + player.points }
51
+ end
52
+
53
+ def high_scores_entry(player)
54
+ "#{player.name.ljust(20,'.')} #{player.score}"
55
+ end
56
+
57
+ def print_stats
58
+ puts "\n#{@title} Statistics:"
59
+ strong, wimpy = @players.partition { |p| p.strong? }
60
+ puts "\n#{strong.length} strong players:"
61
+ strong.each { |p| print_name_and_health(p)}
62
+ puts "\n#{wimpy.length} wimpy players:"
63
+ wimpy.each { |p| print_name_and_health(p)}
64
+ puts "\n#{@title} High Scores:"
65
+ # sorted_players = @players.sort { |a, b| b.score <=> a.score }
66
+ @players.sort.each { |p| puts high_scores_entry(p)}
67
+
68
+ @players.each do |p|
69
+ puts "\n#{p.name}'s point totals:"
70
+ p.each_found_treasure do |treasure|
71
+ puts "#{treasure.points} total #{treasure.name} points"
72
+ end
73
+ puts "#{p.points} grand total points"
74
+ end
75
+
76
+ puts "\nTotal treasure points found: #{total_points}"
77
+ end
78
+
79
+ def save_high_scores(to_file="high_scores.txt")
80
+ File.open(to_file, 'w') do |file|
81
+ file.puts "\n#{@title} High Scores:"
82
+ @players.sort.each { |p| file.puts high_scores_entry(p)}
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'die'
2
+ require_relative 'loaded_die'
3
+ require_relative 'treasure_trove'
4
+
5
+ module StudioGame
6
+ module GameTurn
7
+ def self.take_turn(player)
8
+ die = Die.new
9
+ case die.roll
10
+ when 1..2
11
+ player.blam
12
+ when 3..4
13
+ puts "#{player.name} was skipped."
14
+ else
15
+ player.w00t
16
+ end
17
+
18
+
19
+ prize = TreasureTrove.random
20
+ player.found_treasure(prize)
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ require_relative 'auditable'
2
+
3
+ module StudioGame
4
+ class LoadedDie
5
+ include Auditable
6
+ attr_reader :number
7
+
8
+ def roll
9
+ numbers = [1, 1, 2, 5, 6, 6]
10
+ @number = numbers.sample
11
+ audit
12
+ @number
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ module StudioGame
2
+ module Playable
3
+ def w00t
4
+ self.health += 15
5
+ puts "#{name} got w00ted!"
6
+ end
7
+
8
+ def blam
9
+ self.health -= 10
10
+ puts "#{name} got blammed!"
11
+ end
12
+
13
+ def strong?
14
+ self.health > 100
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,64 @@
1
+ require_relative 'treasure_trove'
2
+ require_relative 'playable'
3
+
4
+ module StudioGame
5
+ class Player
6
+ include Playable
7
+ attr_accessor :health
8
+ attr_accessor :name
9
+
10
+ def initialize(name, health = 100)
11
+ @name = name.capitalize
12
+ @health = health
13
+ @found_treasures = Hash.new(0)
14
+ end
15
+
16
+ def found_treasure(treasure)
17
+ @found_treasures[treasure.name] += treasure.points
18
+ puts "#{@name} found a #{treasure.name} worth #{treasure.points} points!"
19
+ puts "#{@name}'s treasures: #{@found_treasures}"
20
+ end
21
+
22
+ def points
23
+ @found_treasures.values.reduce(0, :+)
24
+ end
25
+
26
+ def score # virtual attribute
27
+ @health + points
28
+ end
29
+
30
+ def name=(new_name)
31
+ @name = new_name.capitalize
32
+ end
33
+
34
+ def each_found_treasure
35
+ @found_treasures.each do |name, points|
36
+ yield Treasure.new(name, points)
37
+ end
38
+ end
39
+
40
+ def to_s
41
+ "I'm #{@name} with health = #{@health}, points = #{points}, and score = #{score}."
42
+ end
43
+
44
+ def <=>(other)
45
+ other.score <=> score
46
+ end
47
+
48
+ def self.from_csv(line)
49
+ name, health = line.split(',')
50
+ player = Player.new(name, Integer(health))
51
+ end
52
+ end
53
+
54
+ if __FILE__ == $0 # or $PROGRAM_NAME
55
+ # will only run the following code if you run the actual player.rb file
56
+ player = Player.new("moe")
57
+ puts player.name
58
+ puts player.health
59
+ player.w00t
60
+ puts player.health
61
+ player.blam
62
+ puts player.health
63
+ end
64
+ end
@@ -0,0 +1,21 @@
1
+ module StudioGame
2
+ Treasure = Struct.new(:name, :points)
3
+
4
+ module TreasureTrove
5
+ TREASURES = [
6
+ Treasure.new(:pie, 5),
7
+ Treasure.new(:bottle, 25),
8
+ Treasure.new(:hammer, 50),
9
+ Treasure.new(:skillet, 100),
10
+ Treasure.new(:broomstick, 200),
11
+ Treasure.new(:crowbar, 400)
12
+ ]
13
+
14
+ def self.random
15
+ TREASURES.sample
16
+ end
17
+ end
18
+ end
19
+ # puts TreasureTrove::TREASURES
20
+ # prize = TreasureTrove.random
21
+ # puts "You found a #{prize.name} for #{prize.points} points!"
@@ -0,0 +1,37 @@
1
+ require 'studio_game_secor/berserk_player'
2
+
3
+ module StudioGame
4
+ describe BerserkPlayer do
5
+
6
+ before do
7
+ @initial_health = 50
8
+ @player = BerserkPlayer.new("berserker", @initial_health)
9
+ end
10
+
11
+ it "does not go berserk when w00ted up to 5 times" do
12
+ 1.upto(5) { @player.w00t }
13
+
14
+ expect(@player.berserk?).to be_falsey
15
+
16
+ # or if using Rspec 3.0:
17
+ # @player.berserk?.should be_falsey
18
+ end
19
+
20
+ it "goes berserk when w00ted more than 5 times" do
21
+ 1.upto(6) { @player.w00t }
22
+
23
+ expect(@player.berserk?).to be_truthy
24
+
25
+ # or if using Rspec 3.0:
26
+ # @player.berserk?.should be_truthy
27
+ end
28
+
29
+ it "gets w00ted instead of blammed when it's gone berserk" do
30
+ 1.upto(6) { @player.w00t }
31
+ 1.upto(2) { @player.blam }
32
+
33
+ expect(@player.health).to eq(@initial_health + (8 * 15))
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,43 @@
1
+ require 'studio_game_secor/clumsy_player'
2
+
3
+ module StudioGame
4
+ describe ClumsyPlayer do
5
+ before do
6
+ @player = ClumsyPlayer.new("klutz")
7
+ end
8
+
9
+ it "only gets half the point value for each treasure" do
10
+ expect(@player.points).to eq(0)
11
+
12
+ hammer = Treasure.new(:hammer, 50)
13
+ @player.found_treasure(hammer)
14
+ @player.found_treasure(hammer)
15
+ @player.found_treasure(hammer)
16
+
17
+ expect(@player.points).to eq(75)
18
+
19
+ crowbar = Treasure.new(:crowbar, 400)
20
+ @player.found_treasure(crowbar)
21
+
22
+ expect(@player.points).to eq(275)
23
+
24
+ yielded = []
25
+ @player.each_found_treasure do |treasure|
26
+ yielded << treasure
27
+ end
28
+
29
+ expect(yielded).to eq([Treasure.new(:hammer, 75), Treasure.new(:crowbar, 200)])
30
+ end
31
+
32
+ context "define clumsy player with a boost factor" do
33
+ it "gets a boost in w00ts" do
34
+ boost = 5
35
+ initial_health = 100
36
+ player = ClumsyPlayer.new("klutz",initial_health, boost)
37
+ player.w00t
38
+ expect(player.health).to eq(initial_health + (15 * boost))
39
+ end
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,59 @@
1
+ require 'studio_game_secor/game'
2
+
3
+ module StudioGame
4
+ describe Game do
5
+
6
+ before do
7
+ $stdout = StringIO.new
8
+ @game = Game.new("Knuckleheads")
9
+
10
+ @initial_health = 100
11
+ @player = Player.new("moe", @initial_health)
12
+
13
+ @game.add_player(@player)
14
+ end
15
+
16
+ it "high roll" do
17
+ allow_any_instance_of(Die).to receive(:roll).and_return(5)
18
+ @game.play(2)
19
+ expect(@player.health).to eq(@initial_health + (15*2))
20
+ end
21
+
22
+ it "medium roll" do
23
+ allow_any_instance_of(Die).to receive(:roll).and_return(3)
24
+ @game.play(2)
25
+ expect(@player.health).to eq(@initial_health)
26
+ end
27
+
28
+ it "low roll" do
29
+ allow_any_instance_of(Die).to receive(:roll).and_return(1)
30
+ @game.play(2)
31
+ expect(@player.health).to eq(@initial_health - (10*2))
32
+ end
33
+
34
+ it "assigns a treasure for points during a player's turn" do
35
+ game = Game.new("Knuckleheads")
36
+ player = Player.new("moe")
37
+ game.add_player(player)
38
+ game.play(1)
39
+ expect(player.points).not_to be_zero
40
+ end
41
+
42
+ it "computes total points as the sum of all player points" do
43
+ game = Game.new("Knuckleheads")
44
+
45
+ player1 = Player.new("moe")
46
+ player2 = Player.new("larry")
47
+
48
+ game.add_player(player1)
49
+ game.add_player(player2)
50
+
51
+ player1.found_treasure(Treasure.new(:hammer, 50))
52
+ player1.found_treasure(Treasure.new(:hammer, 50))
53
+ player2.found_treasure(Treasure.new(:crowbar, 400))
54
+
55
+ expect(game.total_points).to eq(500)
56
+ end
57
+
58
+ end
59
+ end
@@ -0,0 +1,143 @@
1
+ # to run: rspec player_spec.rb --color --format doc
2
+
3
+ require 'studio_game_secor/player'
4
+
5
+ module StudioGame
6
+ describe Player do
7
+
8
+ before do
9
+ $stdout = StringIO.new # any output generated by example code will not to to the console
10
+ @initial_health = 150
11
+ @player = Player.new("larry", @initial_health)
12
+ end
13
+
14
+ it "capitalizes the name" do
15
+ #player.name.should == "Larry"
16
+ expect(@player.name).to eq("Larry")
17
+ end
18
+
19
+ it "has an initial health" do
20
+ expect(@player.health).to eq(@initial_health)
21
+ end
22
+
23
+ # it "score is health plus number of letters in player's name" do
24
+ # expect(@player.score).to eq(@initial_health + @player.name.length)
25
+ # end
26
+
27
+ it "computes a score as the sum of its health and points" do
28
+ @player.found_treasure(Treasure.new(:hammer, 50))
29
+ @player.found_treasure(Treasure.new(:hammer, 50))
30
+
31
+ expect(@player.score).to eq(250)
32
+ end
33
+
34
+ it "w00t adds 15 points to health" do
35
+ @player.w00t
36
+ expect(@player.health).to eq(@initial_health + 15)
37
+ end
38
+
39
+ it "blam subtracts 10 points from health" do
40
+ @player.blam
41
+ expect(@player.health).to eq(@initial_health - 10)
42
+ end
43
+
44
+ it "has a string representation" do
45
+ @player.found_treasure(Treasure.new(:hammer, 50))
46
+ @player.found_treasure(Treasure.new(:hammer, 50))
47
+ expect(@player.to_s).to eq("I'm Larry with health = 150, points = 100, and score = 250.")
48
+ end
49
+
50
+ it "computes points as the sum of all treasure points" do
51
+ expect(@player.points).to eq(0)
52
+ @player.found_treasure(Treasure.new(:hammer, 50))
53
+ expect(@player.points).to eq(50)
54
+ @player.found_treasure(Treasure.new(:crowbar, 400))
55
+ expect(@player.points).to eq(450)
56
+ @player.found_treasure(Treasure.new(:hammer, 50))
57
+ expect(@player.points).to eq(500)
58
+ end
59
+
60
+ it "yields each found treasure and its total points" do
61
+ @player.found_treasure(Treasure.new(:skillet, 100))
62
+ @player.found_treasure(Treasure.new(:skillet, 100))
63
+ @player.found_treasure(Treasure.new(:hammer, 50))
64
+ @player.found_treasure(Treasure.new(:bottle, 5))
65
+ @player.found_treasure(Treasure.new(:bottle, 5))
66
+ @player.found_treasure(Treasure.new(:bottle, 5))
67
+ @player.found_treasure(Treasure.new(:bottle, 5))
68
+ @player.found_treasure(Treasure.new(:bottle, 5))
69
+
70
+ yielded = []
71
+ @player.each_found_treasure do |treasure|
72
+ yielded << treasure
73
+ end
74
+
75
+ expect(yielded).to eq([
76
+ Treasure.new(:skillet, 200),
77
+ Treasure.new(:hammer, 50),
78
+ Treasure.new(:bottle, 25)
79
+ ])
80
+ end
81
+
82
+ it "has a line and creates a new player" do
83
+ player = Player.from_csv("larry,150")
84
+ expect(player.name).to eq("Larry")
85
+ expect(player.health).to eq(150)
86
+ end
87
+
88
+ context "created with a default health" do
89
+ before do
90
+ @player = Player.new("larry")
91
+ end
92
+
93
+ it "has a health of 100" do
94
+ expect(@player.health).to eq(100)
95
+ end
96
+ end
97
+
98
+ context "created to change the name" do
99
+ before do
100
+ @player = Player.new("larry")
101
+ end
102
+ it "assign a new name and capitalizes it" do
103
+ @player.name = "moe"
104
+ expect(@player.name).to eq("Moe")
105
+ end
106
+ end
107
+
108
+ context "Health is 150" do
109
+ before do
110
+ @player = Player.new("larry",150)
111
+ end
112
+
113
+ it "is player strong?" do
114
+ expect(@player).to be_strong
115
+ end
116
+ end
117
+
118
+ context "Health is 100" do
119
+ before do
120
+ @player = Player.new("larry",100)
121
+ end
122
+
123
+ it "is player strong?" do
124
+ expect(@player).not_to be_strong
125
+ end
126
+ end
127
+
128
+ context "in a collection of players" do
129
+ before do
130
+ @player1 = Player.new("moe", 100)
131
+ @player2 = Player.new("larry", 200)
132
+ @player3 = Player.new("curly", 300)
133
+
134
+ @players = [@player1, @player2, @player3]
135
+ end
136
+
137
+ it "is sorted by decreasing score" do
138
+ expect(@players.sort).to eq([@player3, @player2, @player1])
139
+ end
140
+ end
141
+
142
+ end
143
+ end
@@ -0,0 +1,56 @@
1
+ require 'studio_game_secor/treasure_trove'
2
+
3
+ module StudioGame
4
+ describe Treasure do
5
+
6
+ before do
7
+ @treasure = Treasure.new(:hammer, 50)
8
+ end
9
+
10
+ it "has a name attribute" do
11
+ expect(@treasure.name).to eq(:hammer)
12
+ end
13
+
14
+ it "has a points attribute" do
15
+ expect(@treasure.points).to eq(50)
16
+ end
17
+
18
+ end
19
+
20
+ describe TreasureTrove do
21
+
22
+ it "has six treasures" do
23
+ expect(TreasureTrove::TREASURES.size).to eq(6)
24
+ end
25
+
26
+ it "has a pie worth 5 points" do
27
+ expect(TreasureTrove::TREASURES[0]).to eq(Treasure.new(:pie, 5))
28
+ end
29
+
30
+ it "has a bottle worth 25 points" do
31
+ expect(TreasureTrove::TREASURES[1]).to eq(Treasure.new(:bottle, 25))
32
+ end
33
+
34
+ it "has a hammer worth 50 points" do
35
+ expect(TreasureTrove::TREASURES[2]).to eq(Treasure.new(:hammer, 50))
36
+ end
37
+
38
+ it "has a skillet worth 100 points" do
39
+ expect(TreasureTrove::TREASURES[3]).to eq(Treasure.new(:skillet, 100))
40
+ end
41
+
42
+ it "has a broomstick worth 200 points" do
43
+ expect(TreasureTrove::TREASURES[4]).to eq(Treasure.new(:broomstick, 200))
44
+ end
45
+
46
+ it "has a crowbar worth 400 points" do
47
+ expect(TreasureTrove::TREASURES[5]).to eq(Treasure.new(:crowbar, 400))
48
+ end
49
+
50
+ it "returns a random treasure" do
51
+ treasure = TreasureTrove.random
52
+ expect(TreasureTrove::TREASURES).to include(treasure)
53
+ end
54
+
55
+ end
56
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: studio_game_secor
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Beth Secor
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.3.2
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.3.2
27
+ description: |
28
+ I took an online course from Pragmatic Studio and built this game that takes multiple players and they randomly get w00ted or blammed and randomly accumulate treasure.
29
+ email: elizabeth.a.secor@gmail.com
30
+ executables:
31
+ - studio_game_secor
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - LICENSE
36
+ - README
37
+ - bin/players.csv
38
+ - bin/studio_game_secor
39
+ - lib/studio_game_secor/auditable.rb
40
+ - lib/studio_game_secor/berserk_player.rb
41
+ - lib/studio_game_secor/clumsy_player.rb
42
+ - lib/studio_game_secor/die.rb
43
+ - lib/studio_game_secor/game.rb
44
+ - lib/studio_game_secor/game_turn.rb
45
+ - lib/studio_game_secor/loaded_die.rb
46
+ - lib/studio_game_secor/playable.rb
47
+ - lib/studio_game_secor/player.rb
48
+ - lib/studio_game_secor/treasure_trove.rb
49
+ - spec/studio_game_secor/berserk_player_spec.rb
50
+ - spec/studio_game_secor/clumsy_player_spec.rb
51
+ - spec/studio_game_secor/game_spec.rb
52
+ - spec/studio_game_secor/player_spec.rb
53
+ - spec/studio_game_secor/treasure_trove_spec.rb
54
+ homepage: https://pragmaticstudio.com/ruby
55
+ licenses:
56
+ - MIT
57
+ metadata: {}
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '2.0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 2.4.6
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: Game built from a Pragmatic Studio course
78
+ test_files:
79
+ - spec/studio_game_secor/berserk_player_spec.rb
80
+ - spec/studio_game_secor/clumsy_player_spec.rb
81
+ - spec/studio_game_secor/game_spec.rb
82
+ - spec/studio_game_secor/player_spec.rb
83
+ - spec/studio_game_secor/treasure_trove_spec.rb