davids_studio_game 1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 67364146bb763a46d322f78c717badb42774d8cb2580841b270478ce33598813
4
+ data.tar.gz: c7b89862e8e6d3a9e861f70c29a6b16cb4ca3f687a181aaf2b3f4b1c17f4b4e1
5
+ SHA512:
6
+ metadata.gz: da4a0d67d08f932ec5c0e2edce53f316da4ceba41c4df7f014a4f3add6ea3f87db948d3e874a8fe8b62a0b62dcd8a993720cda1a1f4fb6ea9a08874beedd3bf7
7
+ data.tar.gz: bb0efe174af9ec788ff98211f4ebb05b01aa4c0e170dbe27b6c228754a6de99036b47d41e93f2b548331ed6b6edb2698fdbd592bf71a71125d344024d7c40489
@@ -0,0 +1,3 @@
1
+ Alvin,100
2
+ Simon,60
3
+ Theo,125
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/studio_game/game'
4
+ require_relative '../lib/studio_game/clumsy_player'
5
+ require_relative '../lib/studio_game/berserk_player'
6
+ require_relative '../lib/studio_game/player'
7
+
8
+ player1 = StudioGame::Player.new('larry', 60)
9
+ player2 = StudioGame::Player.new('curly', 125)
10
+ player3 = StudioGame::Player.new('moe')
11
+
12
+ game = StudioGame::Game.new('knuckleheads')
13
+ default_player_file =
14
+ File.join(File.dirname(__FILE__), 'players.csv')
15
+ game.load_players(ARGV.shift || default_player_file)
16
+
17
+
18
+ loop do
19
+ puts "\nHow many game rounds? ('quit' to exit)"
20
+ answer = gets.chomp.downcase
21
+ case answer
22
+ when /^\d+$/
23
+ game.play(answer.to_i)
24
+ when 'quit', 'exit'
25
+ game.print_stats
26
+ break
27
+ else
28
+ puts 'Please enter a number or quit'
29
+ end
30
+ end
31
+
32
+ game.save_high_scores
@@ -0,0 +1,7 @@
1
+ require_relative 'loaded_die'
2
+
3
+ module Auditable
4
+ def audit
5
+ puts "Rolled a #{number} (#{self.class})"
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 w00t
11
+ super
12
+ @w00t_count += 1
13
+ puts "#{@name} is berserk!" if berserk?
14
+ end
15
+
16
+ def berserk?
17
+ @w00t_count > 5
18
+ end
19
+
20
+ def blam
21
+ if berserk?
22
+ w00t
23
+ else
24
+ super
25
+ end
26
+ end
27
+ end
28
+
29
+ if $PROGRAM_NAME == __FILE__
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,27 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+ class ClumsyPlayer < Player
5
+ def found_treasure(treasure)
6
+ default_treasure = Treasure.new(treasure.name, treasure.points / 2.0)
7
+ super(default_treasure)
8
+ end
9
+ end
10
+
11
+ if $PROGRAM_NAME == __FILE__
12
+ clumsy = ClumsyPlayer.new('klutz')
13
+
14
+ hammer = Treasure.new(:hammer, 50)
15
+ clumsy.found_treasure(hammer)
16
+ clumsy.found_treasure(hammer)
17
+ clumsy.found_treasure(hammer)
18
+
19
+ crowbar = Treasure.new(:crowbar, 400)
20
+ clumsy.found_treasure(crowbar)
21
+
22
+ clumsy.each_found_treasure do |treasure|
23
+ puts "#{treasure.points} total #{treasure.name} points"
24
+ end
25
+ puts "#{clumsy.points} grand total points"
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'auditable'
2
+
3
+ class Die
4
+ include Auditable
5
+
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
+ end
18
+
19
+ if __FILE__ == $0
20
+ die = Die.new
21
+ puts die.roll
22
+ puts die.roll
23
+ puts die.roll
24
+ end
@@ -0,0 +1,96 @@
1
+ require_relative 'player'
2
+ require_relative 'game_turn'
3
+ require_relative 'treasure_trove'
4
+ require 'csv'
5
+
6
+ module StudioGame
7
+ class Game
8
+ attr_accessor :title
9
+
10
+ def initialize(title)
11
+ @title = title
12
+ @players = []
13
+ end
14
+
15
+ def save_high_scores(to_file = 'high_scores.txt')
16
+ File.open(to_file, 'w') do |file|
17
+ file.puts "#{title} High Scores:"
18
+
19
+ @players.sort.each do |player|
20
+ puts high_score_entry(player)
21
+ end
22
+ end
23
+ end
24
+
25
+ def high_score_entry(player)
26
+ formatted_name = player.name.ljust(20, '.')
27
+ puts "#{formatted_name} #{player.score}"
28
+ end
29
+
30
+ def load_players(from_file)
31
+ CSV.foreach(from_file) do |row|
32
+ player = Player.new(row[0], row[1].to_i)
33
+ add_player(player)
34
+ end
35
+ end
36
+
37
+ def total_points
38
+ @players.reduce(0) { |sum, player| sum + player.points }
39
+ end
40
+
41
+ def add_player(a_player)
42
+ @players.push(a_player)
43
+ end
44
+
45
+ def play(rounds)
46
+ puts "There are #{@players.size} players in #{@title}: "
47
+ puts @players.sort
48
+
49
+ treasures = TreasureTrove::TREASURES
50
+ puts "There are #{treasures.size} treasures to be found:"
51
+
52
+ treasures.each do |treasure|
53
+ puts "A #{treasure.name} is worth #{treasure.points} points"
54
+ end
55
+
56
+ 1.upto(rounds) do |round|
57
+ puts "\n Round #{round}:"
58
+
59
+ @players.each do |player|
60
+ GameTurn.take_turn(player)
61
+
62
+ treasures = TreasureTrove.random
63
+ puts player
64
+ end
65
+ end
66
+ end
67
+
68
+ def print_name_and_health(_player)
69
+ puts "n\ #{@health}'s' stats:"
70
+ end
71
+
72
+ def print_stats
73
+ strong, wimpy = @players.partition(&:strong?)
74
+
75
+ puts "\nStrong:"
76
+ puts strong.sort
77
+
78
+ puts "\nWimpy:"
79
+ puts wimpy.sort
80
+ print_name_and_health(@player)
81
+
82
+ puts "\n#{@title} High Scores:"
83
+ @players.sort.each do |player|
84
+ puts high_score_entry(player)
85
+
86
+ @players.sort.each do |player|
87
+ puts "\n#{player.name}'s point totals:"
88
+ player.each_found_treasure do |treasure|
89
+ puts "#{treasure.points} total #{treasure.name} points"
90
+ end
91
+ puts "#{player.points} grand total points"
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'loaded_die'
2
+
3
+ module StudioGame
4
+ module GameTurn
5
+ def self.take_turn(player)
6
+ die = LoadedDie.new
7
+
8
+ roll = die.roll
9
+
10
+ case roll
11
+ when 1..2
12
+ player.blam
13
+ puts 'Player is blammed'
14
+ when 5..6
15
+ player.w00t
16
+ puts 'Player was w00ted'
17
+ end
18
+
19
+ treasure = TreasureTrove.random
20
+ player.found_treasure(treasure)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'auditable'
2
+
3
+ class LoadedDie
4
+ include Auditable
5
+
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
@@ -0,0 +1,23 @@
1
+ module Playable
2
+ def blam
3
+ self.health -= 10
4
+ puts "#{name} got blammed!"
5
+ end
6
+
7
+ def w00t
8
+ self.health += 15
9
+ puts "#{name} got w00ted!"
10
+ end
11
+
12
+ def strong?
13
+ self.health > 100
14
+ end
15
+
16
+ def <=>(other_player)
17
+ other_player.name <=> name
18
+ end
19
+
20
+ def score
21
+ self.health + points
22
+ end
23
+ end
@@ -0,0 +1,57 @@
1
+ require_relative 'treasure_trove'
2
+ require_relative 'playable'
3
+
4
+ module StudioGame
5
+ class Player
6
+ include Playable
7
+
8
+ attr_accessor :name, :health
9
+ attr_reader :health
10
+
11
+ def initialize(name, health = 100)
12
+ @name = name.capitalize
13
+ @health = health
14
+ @found_treasures = Hash.new(0)
15
+ end
16
+
17
+ def self.from_csv(string)
18
+ name, health = string.split(',')
19
+ Player.new(name, Integer(health))
20
+ end
21
+
22
+ def points
23
+ @found_treasures.values.reduce(0, :+)
24
+ end
25
+
26
+ def each_found_treasure
27
+ @found_treasures.each do |name, points|
28
+ treasure = Treasure.new(name, points)
29
+ yield treasure
30
+ end
31
+ end
32
+
33
+ def found_treasure(treasure)
34
+ @found_treasures [treasure.name] += treasure.points
35
+ puts "#{@name} found a #{treasure.name} worth #{treasure.points} points."
36
+ puts "#{@name}'s treasure: #{@found_treasures} "
37
+ end
38
+
39
+ def to_s
40
+ "I'm #{@name} with health = #{@health}, points = #{points}, and score = #{score}."
41
+ end
42
+
43
+ def status
44
+ strong? ? 'strong' : 'wimpy'
45
+ end
46
+ end
47
+ end
48
+
49
+ if $PROGRAM_NAME == __FILE__
50
+ player = Player.new('moe')
51
+ puts player.name
52
+ puts player.health
53
+ player.w00t
54
+ puts player.health
55
+ player.blam
56
+ puts player.health
57
+ end
@@ -0,0 +1,25 @@
1
+
2
+ module StudioGame
3
+ Treasure = Struct.new(:name, :points)
4
+
5
+ module TreasureTrove
6
+ TREASURES = [
7
+ Treasure.new(:pie, 5),
8
+ Treasure.new(:bottle, 25),
9
+ Treasure.new(:hammer, 50),
10
+ Treasure.new(:skillet, 100),
11
+ Treasure.new(:broomstick, 200),
12
+ Treasure.new(:crowbar, 400)
13
+ ].freeze
14
+
15
+ def self.random
16
+ TREASURES.sample
17
+ end
18
+ end
19
+
20
+ if $PROGRAM_NAME == __FILE__
21
+ puts Treasure::TREASURES
22
+ treasure = Treasure.random
23
+ puts "There are #{treasure.name} (#{treasure.points} points)"
24
+ end
25
+ end
@@ -0,0 +1,35 @@
1
+ require 'studio_game/berserk_player'
2
+
3
+ module StudioGame
4
+ describe BerserkPlayer do
5
+ before do
6
+ @initial_health = 50
7
+ @player = BerserkPlayer.new('berserker', @initial_health)
8
+ end
9
+
10
+ it 'does not go berserk when w00ted up to 5 times' do
11
+ 1.upto(5) { @player.w00t }
12
+
13
+ expect(@player).not_to be_berserk
14
+
15
+ # or if using Rspec 3.0:
16
+ # @player.berserk?.should be_falsey
17
+ end
18
+
19
+ it 'goes berserk when w00ted more than 5 times' do
20
+ 1.upto(6) { @player.w00t }
21
+
22
+ expect(@player).to be_berserk
23
+
24
+ # or if using Rspec 3.0:
25
+ # @player.berserk?.should be_truthy
26
+ end
27
+
28
+ it "gets w00ted instead of blammed when it's gone berserk" do
29
+ 1.upto(6) { @player.w00t }
30
+ 1.upto(2) { @player.blam }
31
+
32
+ expect(@player.health).to eq(@initial_health + (8 * 15))
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ require 'studio_game/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
+ end
32
+ end
@@ -0,0 +1,56 @@
1
+ require 'studio_game/game'
2
+
3
+ module StudioGame
4
+ describe Game do
5
+
6
+ before do
7
+ @game = Game.new('Knuckleheads')
8
+
9
+ @initial_health = 100
10
+ @player = Player.new('moe', @initial_health)
11
+
12
+ @game.add_player(@player)
13
+ end
14
+
15
+ it 'has a title' do
16
+ expect(@game.title).to eq('Knuckleheads')
17
+ end
18
+
19
+ it 'w00ts the player if a high number is rolled' do
20
+ allow_any_instance_of(LoadedDie).to receive(:roll).and_return(5)
21
+ @game.play(1)
22
+
23
+ expect(@player.health).to eq(@initial_health + 15)
24
+ end
25
+
26
+ it 'skips the player if a medium number is rolled' do
27
+ allow_any_instance_of(LoadedDie).to receive(:roll).and_return(3)
28
+
29
+ @game.play(1)
30
+
31
+ expect(@player.health).to eq(@initial_health)
32
+ end
33
+
34
+ it 'blams the player if a low number is rolled' do
35
+ allow_any_instance_of(LoadedDie).to receive(:roll).and_return(1)
36
+
37
+ @game.play(1)
38
+
39
+ expect(@player.health).to eq(@initial_health - 10)
40
+ end
41
+
42
+ it "assigns a treasure for points during a player's turn" do
43
+ game = Game.new('Knuckleheads')
44
+ player = Player.new('moe')
45
+
46
+ game.add_player(player)
47
+
48
+ game.play(1)
49
+
50
+ expect(player.points).not_to be_zero
51
+
52
+ # or use alternate expectation syntax:
53
+ # expect(player.points).not_to be_zero
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,130 @@
1
+ require 'studio_game/player'
2
+ require 'studio_game/game'
3
+
4
+ module StudioGame
5
+
6
+ describe Player do
7
+ before do
8
+ @initial_health = 150
9
+ @player = Player.new('larry', @initial_health)
10
+ end
11
+
12
+ before do
13
+ $stdout = StringIO.new
14
+ end
15
+
16
+ it 'has a capitalized name' do
17
+ expect(@player.name).to eq('Larry')
18
+ end
19
+
20
+ it 'can be created from a CSV string' do
21
+ player = Player.from_csv('larry,150')
22
+
23
+ expect(player.name).to eq('Larry')
24
+ expect(player.health).to eq(150)
25
+ end
26
+
27
+ it 'has an initial health' do
28
+ expect(@player.health).to eq(150)
29
+ end
30
+
31
+ it 'has a string representation' do
32
+ @player.found_treasure(Treasure.new(:hammer, 50))
33
+ @player.found_treasure(Treasure.new(:hammer, 50))
34
+
35
+ expect(@player.to_s).to eq("I'm Larry with health = 150, points = 100, and score = 250.")
36
+ end
37
+
38
+ it 'computes a score as the sum of its health and points' do
39
+ @player.found_treasure(Treasure.new(:hammer, 50))
40
+ @player.found_treasure(Treasure.new(:hammer, 50))
41
+
42
+ expect(@player.score).to eq(250)
43
+ # expect(@player.score).to eq(150 + 5)
44
+ end
45
+
46
+ it 'increases health by 15 when w00ted' do
47
+ @player.w00t
48
+
49
+ expect(@player.health).to eq(@initial_health + 15)
50
+ end
51
+
52
+ it 'decreases health by 10 when blammed' do
53
+ @player.blam
54
+
55
+ expect(@player.health).to eq(@initial_health - 10)
56
+ end
57
+
58
+ context 'with a health greater than 100' do
59
+ before do
60
+ @player = Player.new('larry', 150)
61
+ end
62
+
63
+ it 'is strong' do
64
+ expect(@player).to be_strong
65
+ end
66
+ end
67
+
68
+ context 'with a health of 100 or less' do
69
+ before do
70
+ @player = Player.new('larry', 100)
71
+ end
72
+
73
+ it 'is wimpy' do
74
+ expect(@player).not_to be_strong
75
+ end
76
+
77
+ context 'in a collection of players' do
78
+ before do
79
+ @player1 = Player.new('moe', 100)
80
+ @player2 = Player.new('larry', 200)
81
+ @player3 = Player.new('curly', 300)
82
+
83
+ @players = [@player1, @player2, @player3]
84
+ end
85
+
86
+ it 'is sorted by decreasing score' do
87
+ expect(@players.sort).to eq [@player1, @player2, @player3]
88
+ end
89
+
90
+ it 'computes total points as the sum of all player points' do
91
+ game = Game.new('Knuckleheads')
92
+
93
+ player1 = Player.new('moe')
94
+ player2 = Player.new('larry')
95
+
96
+ game.add_player(player1)
97
+ game.add_player(player2)
98
+
99
+ player1.found_treasure(Treasure.new(:hammer, 50))
100
+ player1.found_treasure(Treasure.new(:hammer, 50))
101
+ player2.found_treasure(Treasure.new(:crowbar, 400))
102
+
103
+ expect(game.total_points).to eq(500)
104
+ end
105
+
106
+ it 'yields each found treasure and its total points' do
107
+ @player.found_treasure(Treasure.new(:skillet, 100))
108
+ @player.found_treasure(Treasure.new(:skillet, 100))
109
+ @player.found_treasure(Treasure.new(:hammer, 50))
110
+ @player.found_treasure(Treasure.new(:bottle, 5))
111
+ @player.found_treasure(Treasure.new(:bottle, 5))
112
+ @player.found_treasure(Treasure.new(:bottle, 5))
113
+ @player.found_treasure(Treasure.new(:bottle, 5))
114
+ @player.found_treasure(Treasure.new(:bottle, 5))
115
+
116
+ yielded = []
117
+ @player.each_found_treasure do |treasure|
118
+ yielded << treasure
119
+ end
120
+
121
+ expect(yielded).to eq([
122
+ Treasure.new(:skillet, 200),
123
+ Treasure.new(:hammer, 50),
124
+ Treasure.new(:bottle, 25)
125
+ ])
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,56 @@
1
+ require 'studio_game/treasure_trove'
2
+
3
+ module StudioGame
4
+ describe Treasure do
5
+ before do
6
+ @treasure = Treasure.new(:hammer, 50)
7
+ end
8
+
9
+ it 'has a name attribute' do
10
+ expect(@treasure.name).to eq(:hammer)
11
+ end
12
+
13
+ it 'has a points attribute' do
14
+ expect(@treasure.points).to eq(50)
15
+ end
16
+
17
+ it 'returns a random treasure' do
18
+ treasure = TreasureTrove.random
19
+
20
+ expect(TreasureTrove::TREASURES).to include(treasure)
21
+
22
+ # or use alternate expectation syntax:
23
+ # expect(TreasureTrove::TREASURES).to include(treasure)
24
+ end
25
+ end
26
+
27
+ describe TreasureTrove do
28
+ it 'has six treasures' do
29
+ expect(TreasureTrove::TREASURES.size).to eq(6)
30
+ end
31
+
32
+ it 'has a pie worth 5 points' do
33
+ expect(TreasureTrove::TREASURES[0]).to eq(Treasure.new(:pie, 5))
34
+ end
35
+
36
+ it 'has a bottle worth 25 points' do
37
+ expect(TreasureTrove::TREASURES[1]).to eq(Treasure.new(:bottle, 25))
38
+ end
39
+
40
+ it 'has a hammer worth 50 points' do
41
+ expect(TreasureTrove::TREASURES[2]).to eq(Treasure.new(:hammer, 50))
42
+ end
43
+
44
+ it 'has a skillet worth 100 points' do
45
+ expect(TreasureTrove::TREASURES[3]).to eq(Treasure.new(:skillet, 100))
46
+ end
47
+
48
+ it 'has a broomstick worth 200 points' do
49
+ expect(TreasureTrove::TREASURES[4]).to eq(Treasure.new(:broomstick, 200))
50
+ end
51
+
52
+ it 'has a crowbar worth 400 points' do
53
+ expect(TreasureTrove::TREASURES[5]).to eq(Treasure.new(:crowbar, 400))
54
+ end
55
+ end
56
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: davids_studio_game
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.1
5
+ platform: ruby
6
+ authors:
7
+ - David Spradling
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-05-24 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: 2.8.0
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.8'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 2.8.0
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.8'
33
+ description: "# studio_game\n"
34
+ email: dspradling@acsdetaso.com
35
+ executables:
36
+ - studio_game
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - bin/players.csv
41
+ - bin/studio_game
42
+ - lib/studio_game/auditable.rb
43
+ - lib/studio_game/berserk_player.rb
44
+ - lib/studio_game/clumsy_player.rb
45
+ - lib/studio_game/die.rb
46
+ - lib/studio_game/game.rb
47
+ - lib/studio_game/game_turn.rb
48
+ - lib/studio_game/loaded_die.rb
49
+ - lib/studio_game/playable.rb
50
+ - lib/studio_game/player.rb
51
+ - lib/studio_game/treasure_trove.rb
52
+ - spec/studio_game/berserk_player_spec.rb
53
+ - spec/studio_game/clumsy_player_spec.rb
54
+ - spec/studio_game/game_spec.rb
55
+ - spec/studio_game/player_spec.rb
56
+ - spec/studio_game/treasure_trove_spec.rb
57
+ homepage: https://github.com/jspradling83/studio_game
58
+ licenses:
59
+ - MIT
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '1.9'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubygems_version: 3.0.3
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: game involving different players
80
+ test_files:
81
+ - spec/studio_game/clumsy_player_spec.rb
82
+ - spec/studio_game/treasure_trove_spec.rb
83
+ - spec/studio_game/berserk_player_spec.rb
84
+ - spec/studio_game/player_spec.rb
85
+ - spec/studio_game/game_spec.rb