studio_game_lubaton 1.0.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a32ae4bae876750ff3dd84d88f7f8557734e0f83d94f0dfabd6ea679f159e701
4
+ data.tar.gz: 925c80511f5d3acaf32aadc83c38a008d7ad5c515d186f4b0895851d68e5c91d
5
+ SHA512:
6
+ metadata.gz: f7d9f68fb9f7a64960af2b4946d2c8cd0e262dfeca12899afe7c7ca82e09d34c527058ba2a8db370b675f7d6d9cef02e646b95cbf19d8a0c74d23b092e3c6b34
7
+ data.tar.gz: 2e5a1a1d28c7b640382878087233cc2dec744b6946825bed43a3f72887fa36838ad17da520826c84562fa8eed0732d711fe3b9531d67558145c6b1ce6e651bdb
data/LICENSE ADDED
File without changes
data/README ADDED
@@ -0,0 +1 @@
1
+ This is a game where you can add players, find treasures, gain and lose health, and collect points
@@ -0,0 +1,7 @@
1
+ Knuckleheads High Score:
2
+ Mario............... 600
3
+ Sparta.............. 540
4
+ Dagol............... 460
5
+ Berto............... 290
6
+ Klutz............... 107.5
7
+ Berserker........... 100
data/bin/players.csv ADDED
@@ -0,0 +1,4 @@
1
+ Berto,100
2
+ Dagol,60
3
+ Sparta,150
4
+ mario,200
data/bin/studio_game ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../lib/studio_game/game'
3
+ require_relative '../lib/studio_game/clumsy_player'
4
+ require_relative '../lib/studio_game/berserk_player'
5
+
6
+ klutz = StudioGame::ClumsyPlayer.new("klutz", 105)
7
+ berserker =StudioGame::BerserkPlayer.new("berserker", 50)
8
+
9
+ knuckleheads = StudioGame::Game.new("Knuckleheads")
10
+ default_player_file = File.join(File.dirname(__FILE__), 'players.csv')
11
+ knuckleheads.load_players(ARGV.shift || default_player_file)
12
+ knuckleheads.add_player(klutz)
13
+ knuckleheads.add_player(berserker)
14
+
15
+ default_scores_file = File.join(File.dirname(__FILE__), 'current_scores.txt')
16
+
17
+ loop do
18
+ puts "\nHow many rounds? ('quit' to exit)"
19
+ rounds = gets.chomp.downcase
20
+
21
+ case rounds
22
+ when 'quit','exit'
23
+ knuckleheads.print_stats
24
+ knuckleheads.save_high_scores(default_scores_file)
25
+ knuckleheads.high_score
26
+ break
27
+ when /^\d+$/
28
+ puts "playing #{rounds} round/s..."
29
+ knuckleheads.play(rounds.to_i)
30
+ else
31
+ "Please enter a number or 'quit'"
32
+ end
33
+
34
+ end
@@ -0,0 +1,6 @@
1
+
2
+ module Auditable
3
+ def audit
4
+ puts "Rolled a #{self.number} (#{self.class})"
5
+ end
6
+ end
@@ -0,0 +1,26 @@
1
+ require_relative 'player'
2
+ module StudioGame
3
+ class BerserkPlayer < Player
4
+ def initialize(name,health=100)
5
+ super(name,health)
6
+ @w00t_count = 0
7
+ end
8
+ def berserk?
9
+ @w00t_count > 5
10
+ end
11
+ def w00t
12
+ super
13
+ @w00t_count += 1
14
+ puts "#{@name} is berserk!" if berserk?
15
+ end
16
+ def blam
17
+ berserk? ? w00t : super
18
+ end
19
+ end
20
+ if __FILE__ == $0
21
+ berserker = BerserkPlayer.new("berserker", 50)
22
+ 6.times { berserker.w00t }
23
+ 2.times { berserker.blam }
24
+ puts berserker.health
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ require_relative 'player'
2
+ module StudioGame
3
+ class ClumsyPlayer < Player
4
+ def found_treasures(treasure)
5
+ damaged_treasure = Treasure.new(treasure.name, treasure.points/2.0)
6
+ super(damaged_treasure)
7
+ end
8
+ end
9
+
10
+ if __FILE__ == $0
11
+ clumsy = ClumsyPlayer.new("klutz")
12
+
13
+ hammer = Treasure.new(:hammer, 50)
14
+ clumsy.found_treasures(hammer)
15
+ clumsy.found_treasures(hammer)
16
+ clumsy.found_treasures(hammer)
17
+
18
+ crowbar = Treasure.new(:crowbar, 400)
19
+ clumsy.found_treasures(crowbar)
20
+
21
+ clumsy.each_found_treasure do |treasure|
22
+ puts "#{treasure.points} total #{treasure.name} points"
23
+ end
24
+ puts "#{clumsy.points} grand total points"
25
+ end
26
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'auditable'
2
+ module StudioGame
3
+ class Die
4
+ include Auditable
5
+ attr_reader :number
6
+
7
+ def roll
8
+ @number=rand(1..6)
9
+ audit
10
+ @number
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,92 @@
1
+ require_relative 'player'
2
+ require_relative 'game_turn'
3
+ require_relative 'treasure_trove'
4
+ module StudioGame
5
+ class Game
6
+ def initialize(title)
7
+ @title = title
8
+ @players = []
9
+ end
10
+ def load_players(from_file)
11
+ File.readlines(from_file).each do |line|
12
+ add_player(Player.from_csv(line))
13
+ end
14
+ end
15
+ def save_high_scores(to_file="high_scores.txt")
16
+ File.open(to_file, "w") do |file|
17
+ file.puts "#{@title} High Score:"
18
+ @players.sort.each do |player|
19
+ file.puts high_score_entry(player)
20
+ end
21
+ end
22
+ end
23
+ def high_score_entry(player)
24
+ formatted_name = player.name.ljust(20,'.')
25
+ "#{formatted_name} #{player.score}"
26
+ end
27
+
28
+ def add_player(player)
29
+ @players << player
30
+ end
31
+
32
+ def play(rounds)
33
+
34
+ puts "\nThere are #{@players.size} players in #{@title}:"
35
+
36
+ @players.each do |player|
37
+ puts player
38
+ end
39
+ treasures = TreasureTrove::TREASURES
40
+ puts "\nThere are #{treasures.size} treasures to br found. "
41
+
42
+ treasures.each do |treasure|
43
+ puts "A #{treasure.name} is worth #{treasure.points} points."
44
+ end
45
+
46
+
47
+ 1.upto(rounds) do |round|
48
+ puts "\nRound #{round}: "
49
+ @players.each do |player|
50
+ GameTurn.take_turn(player)
51
+
52
+ end
53
+ end
54
+ end
55
+
56
+ def print_stats
57
+ puts "\n#{@title} Statistics:"
58
+ strong_player, wimpy_player = @players.partition { |player| player.strong? }
59
+
60
+ @players.sort.each do |player|
61
+ puts "\n#{player.name}'s point totals:"
62
+
63
+ player.each_found_treasure do |treasure|
64
+ puts "#{treasure.points} total #{treasure.name} points"
65
+ end
66
+
67
+ puts "#{player.points} grand total points"
68
+ end
69
+ puts "\n#{strong_player.size} strong players: "
70
+
71
+ strong_player.sort.each do |player|
72
+ puts "#{player.name} (#{player.health})"
73
+ end
74
+
75
+ puts "\n#{wimpy_player.size} wimpy players: "
76
+ wimpy_player.sort.each do |player|
77
+ puts "#{player.name} (#{player.health})"
78
+ end
79
+
80
+
81
+
82
+ end
83
+
84
+ def high_score
85
+ sorted_players = @players.sort { |a,b| b.score <=> a.score}
86
+ puts "\n#{@title} High Scores:"
87
+ sorted_players.each do |player|
88
+ puts high_score_entry(player)
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'die'
2
+ require_relative 'player'
3
+ require_relative 'loaded_die'
4
+ module StudioGame
5
+ module GameTurn
6
+
7
+ def self.take_turn(player)
8
+ die = StudioGame::Die.new
9
+
10
+ case die.roll
11
+ when 1..2
12
+ player.blam
13
+
14
+ when 3..4
15
+ puts "#{player.name} got skpped."
16
+ else
17
+ player.w00t
18
+
19
+ end
20
+ treasure = StudioGame::TreasureTrove.random
21
+ player.found_treasures(treasure)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'auditable'
2
+ module StudioGame
3
+ class LoadedDie
4
+ include Auditable
5
+ attr_reader :number
6
+ def roll
7
+ numbers = [1,1,2,5,6,6]
8
+ @number = numbers.sample
9
+ audit
10
+ @number
11
+ end
12
+ end
13
+ end
14
+
15
+ if __FILE__ == $0
16
+ die = LoadedDie.new
17
+ puts die.roll
18
+ end
@@ -0,0 +1,19 @@
1
+ require_relative 'player'
2
+ module StudioGame
3
+ module Playable
4
+ def strong?
5
+ self.health > 100
6
+ end
7
+ def w00t
8
+ self.health += 15
9
+ puts "#{name} got wOOted!"
10
+ end
11
+ def blam
12
+ self.health -= 10
13
+ puts "#{name} got blammed!"
14
+ end
15
+ def <=>(other)
16
+ other.score <=> score
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,52 @@
1
+ require_relative 'treasure_trove'
2
+ require_relative 'playable'
3
+ module StudioGame
4
+
5
+ class Player
6
+ include Playable
7
+ attr_accessor :name,:health
8
+ def initialize(name,health=100)
9
+ @name = name.capitalize
10
+ @health = health
11
+ @found_treasure= Hash.new(0)
12
+ end
13
+ def self.from_csv(string)
14
+ name, health = string.split(',')
15
+ Player.new(name,Integer(health))
16
+ end
17
+
18
+ def found_treasures(treasure)
19
+ @found_treasure[treasure.name] += treasure.points
20
+ puts "#{@name} found a #{treasure.name} worth #{treasure.points} points"
21
+ #puts "#{@name}'s treasures: #{@found_treasure}"
22
+ end
23
+ def each_found_treasure
24
+ @found_treasure.each do |name,points|
25
+ yield Treasure.new(name,points)
26
+ end
27
+ end
28
+ def points
29
+ @found_treasure.values.reduce(0,:+)
30
+ end
31
+
32
+
33
+ def to_s
34
+
35
+ "I'm #{@name} with health = #{@health}, points = #{points}, and score = #{score}."
36
+ end
37
+ def score
38
+ @health + points
39
+ end
40
+
41
+
42
+ end
43
+ end
44
+ if __FILE__ == $0
45
+ player = Player.new("moe")
46
+ puts player.name
47
+ puts player.health
48
+ player.w00t
49
+ puts player.health
50
+ player.blam
51
+ puts player.health
52
+ end
@@ -0,0 +1,27 @@
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
+ def self.random
14
+ TREASURES.sample
15
+ end
16
+ end
17
+
18
+ if __FILE__ ==$0
19
+ treasure = TreasureTrove.random
20
+ puts "You found a #{treasure.name} worth #{treasure.points} points"
21
+
22
+ treasure.name = :chocotops
23
+ treasure.points = 11
24
+
25
+ puts "You found a #{treasure.name} worth #{treasure.points} points"
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ require'studio_game/berserk_player'
2
+ module StudioGame
3
+ describe BerserkPlayer do
4
+ before do
5
+ @initial_health = 50
6
+ @player = StudioGame::BerserkPlayer.new("berserker", @initial_health)
7
+ end
8
+ it "does not go berserk when w00ted up to 5 times" do
9
+ 1.upto(5) {@player.w00t}
10
+ @player.berserk?.should be_falsey
11
+ end
12
+ it "goes berserk when w00ted more than 5 time" do
13
+ 1.upto(6) { @player.w00t }
14
+ @player.berserk?.should be_truthy
15
+ end
16
+ it "gets w00ted instead of blammed when it's gone berserk" do
17
+ 1.upto(6) { @player.w00t }
18
+ 1.upto(2) { @player.blam }
19
+
20
+ expect(@player.health).to eq(@initial_health + (8 * 15))
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,30 @@
1
+ require 'studio_game/clumsy_player'
2
+ module StudioGame
3
+ describe ClumsyPlayer do
4
+ before do
5
+ @player= StudioGame::ClumsyPlayer.new("klutz")
6
+ end
7
+ it "only gets half the point value for each treasure" do
8
+ expect(@player.points).to eq(0)
9
+ hammer = Treasure.new(:hammer, 50)
10
+ @player.found_treasures(hammer)
11
+ @player.found_treasures(hammer)
12
+ @player.found_treasures(hammer)
13
+
14
+ expect(@player.points).to eq(75)
15
+
16
+ crowbar = Treasure.new(:crowbar, 400)
17
+ @player.found_treasures(crowbar)
18
+
19
+ expect(@player.points).to eq(275)
20
+
21
+ yielded = []
22
+ @player.each_found_treasure do |treasure|
23
+ yielded << treasure
24
+ end
25
+ expect(yielded).to eq([Treasure.new(:hammer, 75), Treasure.new(:crowbar, 200)])
26
+
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,39 @@
1
+ require 'studio_game/game'
2
+ module StudioGame
3
+ describe Game do
4
+ before do
5
+ @game = Game.new("Knukcleheads")
6
+ @initial_health = 150
7
+ @player = StudioGame::Player.new("moe", @initial_health)
8
+
9
+ @game.add_player(@player)
10
+ end
11
+ it "w00ts the player if a high number is rolled" do
12
+ allow_any_instance_of(Die).to receive(:roll).and_return(5)
13
+ @game.play(2)
14
+ expect(@player.health).to eq(@initial_health+15*2)
15
+ end
16
+
17
+ it "skips the player if a medium number is rolled" do
18
+ allow_any_instance_of(Die).to receive(:roll).and_return(3)
19
+ @game.play(2)
20
+ expect(@player.health).to eq(@initial_health)
21
+ end
22
+
23
+ it "blams the player if a low number is rolled" do
24
+ allow_any_instance_of(Die).to receive(:roll).and_return(1)
25
+ @game.play(2)
26
+ expect(@player.health).to eq(@initial_health-10*2)
27
+ end
28
+ it "assigns a treasure for points during a player's turn" do
29
+ game = Game.new("Knuckleheads")
30
+ player = StudioGame::Player.new("moe")
31
+
32
+ game.add_player(player)
33
+
34
+ game.play(1)
35
+
36
+ expect(player.points).not_to be_zero
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,121 @@
1
+ require 'studio_game/player'
2
+ require 'studio_game/treasure_trove'
3
+ module StudioGame
4
+ describe Player do
5
+ before do
6
+ @initial_health = 150
7
+ @player = StudioGame::Player.new("larry", @initial_health)
8
+
9
+
10
+ end
11
+
12
+ it "has a capitalized name" do
13
+ expect(@player.name).to eq("Larry")
14
+ end
15
+
16
+ it "has an initial health" do
17
+ expect(@player.health).to eq(150)
18
+ end
19
+
20
+ it "has a string representation" do
21
+ @player.found_treasures(Treasure.new(:hammer, 50))
22
+ @player.found_treasures(Treasure.new(:hammer, 50))
23
+ expect(@player.to_s).to eq("I'm Larry with health = 150, points = 100, and score = 250."
24
+ )
25
+ end
26
+ it "computes a score as the sum of its health and points" do
27
+ expect(@player.score).to eq(@initial_health + @player.points)
28
+ end
29
+ it "increases health by 15 when w00ted" do
30
+ @player.w00t
31
+ expect(@player.health).to eq(@initial_health+15)
32
+ end
33
+ it "decreases health by 10 when blammed" do
34
+ @player.blam
35
+ expect(@player.health).to eq(@initial_health-10)
36
+ end
37
+
38
+ context "with a health greater than 100" do
39
+ before do
40
+ @player = Player.new("larry",150)
41
+ end
42
+
43
+ it "is strong" do
44
+ expect(@player).to be_strong
45
+ end
46
+ end
47
+ context "with a health of 100 or less" do
48
+ before do
49
+ @player = Player.new("larry",100)
50
+ end
51
+
52
+ it "is wimpy" do
53
+ expect(@player).not_to be_strong
54
+ end
55
+ end
56
+ context "in a collection of players" do
57
+ before do
58
+ @player1 = Player.new("moe", 100)
59
+ @player2 = Player.new("larry", 200)
60
+ @player3 = Player.new("curly", 300)
61
+
62
+ @players = [@player1, @player2 , @player3]
63
+ end
64
+ it "is sorted by decreasing score" do
65
+ expect(@players.sort).to eq([@player3, @player2 , @player1])
66
+ end
67
+ end
68
+
69
+ it "computes points as the sum of all treasure points" do
70
+ expect(@player.points).to eq(0)
71
+
72
+ @player.found_treasures(Treasure.new(:hammer, 50))
73
+
74
+ expect(@player.points).to eq(50)
75
+
76
+ @player.found_treasures(Treasure.new(:crowbar, 400))
77
+
78
+ expect(@player.points).to eq(450)
79
+
80
+ @player.found_treasures(Treasure.new(:hammer, 50))
81
+
82
+ expect(@player.points).to eq(500)
83
+ end
84
+ it "computes a score as the sum of its health and points" do
85
+ @player.found_treasures(Treasure.new(:hammer, 50))
86
+ @player.found_treasures(Treasure.new(:hammer, 50))
87
+
88
+ expect(@player.to_s).to eq("I'm Larry with health = 150, points = 100, and score = 250.")
89
+ end
90
+ it "yields each found treasure and its total points" do
91
+ @player.found_treasures(Treasure.new(:skillet, 100))
92
+ @player.found_treasures(Treasure.new(:skillet, 100))
93
+ @player.found_treasures(Treasure.new(:hammer, 50))
94
+ @player.found_treasures(Treasure.new(:bottle, 5))
95
+ @player.found_treasures(Treasure.new(:bottle, 5))
96
+ @player.found_treasures(Treasure.new(:bottle, 5))
97
+ @player.found_treasures(Treasure.new(:bottle, 5))
98
+ @player.found_treasures(Treasure.new(:bottle, 5))
99
+
100
+ yielded = []
101
+ @player.each_found_treasure do |treasure|
102
+ yielded << treasure
103
+ end
104
+
105
+ expect(yielded).to eq([
106
+ Treasure.new(:skillet, 200),
107
+ Treasure.new(:hammer, 50),
108
+ Treasure.new(:bottle, 25)
109
+ ]
110
+ )
111
+ end
112
+
113
+ it "can be created from a CSV string" do
114
+ player = Player.from_csv("larry,150")
115
+
116
+ expect(player.name).to eq("Larry")
117
+ expect(player.health).to eq(150)
118
+
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,46 @@
1
+ require 'studio_game/treasure_trove'
2
+ module StudioGame
3
+ describe Treasure do
4
+
5
+ before do
6
+ @initial_points = 50
7
+ @treasure = Treasure.new(:hammer, @initial_points)
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
+ end
18
+
19
+ describe TreasureTrove do
20
+ it "has six treasures" do
21
+ expect(TreasureTrove::TREASURES.size).to eq(6)
22
+ end
23
+ it "has a pie worth 5 points" do
24
+ expect(TreasureTrove::TREASURES[0]).to eq(Treasure.new(:pie, 5))
25
+ end
26
+ it "has a bottle worth 25 points" do
27
+ expect(TreasureTrove::TREASURES[1]).to eq(Treasure.new(:bottle, 25))
28
+ end
29
+ it "has a hammer worth 50 points" do
30
+ expect(TreasureTrove::TREASURES[2]).to eq(Treasure.new(:hammer, 50))
31
+ end
32
+ it "has a skillet worth 100 points" do
33
+ expect(TreasureTrove::TREASURES[3]).to eq(Treasure.new(:skillet, 100))
34
+ end
35
+ it "has a broomstick worth 200 points" do
36
+ expect(TreasureTrove::TREASURES[4]).to eq(Treasure.new(:broomstick, 200))
37
+ end
38
+ it "has a crowbar worth 400 points" do
39
+ expect(TreasureTrove::TREASURES[5]).to eq(Treasure.new(:crowbar, 400))
40
+ end
41
+ it "returns a random treasure" do
42
+ treasure = TreasureTrove.random
43
+ expect(TreasureTrove::TREASURES).to include(treasure)
44
+ end
45
+ end
46
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: studio_game_lubaton
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Franco Mikhail
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-05-20 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: This is a game where you can add players, find treasures, gain and lose
34
+ health, and collect points
35
+ email: franco@gmail.com
36
+ executables:
37
+ - studio_game
38
+ extensions: []
39
+ extra_rdoc_files: []
40
+ files:
41
+ - LICENSE
42
+ - README
43
+ - bin/current_scores.txt
44
+ - bin/players.csv
45
+ - bin/studio_game
46
+ - lib/studio_game/auditable.rb
47
+ - lib/studio_game/berserk_player.rb
48
+ - lib/studio_game/clumsy_player.rb
49
+ - lib/studio_game/die.rb
50
+ - lib/studio_game/game.rb
51
+ - lib/studio_game/game_turn.rb
52
+ - lib/studio_game/loaded_die.rb
53
+ - lib/studio_game/playable.rb
54
+ - lib/studio_game/player.rb
55
+ - lib/studio_game/treasure_trove.rb
56
+ - spec/studio_game/berserk_player_spec.rb
57
+ - spec/studio_game/clumsy_player_spec.rb
58
+ - spec/studio_game/game_spec.rb
59
+ - spec/studio_game/player_spec.rb
60
+ - spec/studio_game/treasure_trove_spec.rb
61
+ homepage: https://www.youtube.com/watch?reload=9&v=BBJa32lCaaY
62
+ licenses:
63
+ - MIT
64
+ metadata: {}
65
+ post_install_message:
66
+ rdoc_options: []
67
+ require_paths:
68
+ - lib
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '1.9'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ requirements: []
80
+ rubygems_version: 3.0.3
81
+ signing_key:
82
+ specification_version: 4
83
+ summary: Let the game begin
84
+ test_files:
85
+ - spec/studio_game/player_spec.rb
86
+ - spec/studio_game/treasure_trove_spec.rb
87
+ - spec/studio_game/berserk_player_spec.rb
88
+ - spec/studio_game/game_spec.rb
89
+ - spec/studio_game/clumsy_player_spec.rb