studio_game_wshaddix 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Copyright (C) 2012 Wes Shaddix
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1 @@
1
+ Some readme text
data/bin/players.csv ADDED
@@ -0,0 +1,3 @@
1
+ Alvin,100
2
+ Simon,60
3
+ Theo,125
data/bin/studio_game ADDED
@@ -0,0 +1,39 @@
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
+
7
+ # create a new game
8
+ puts "Creating new game"
9
+ knuckleheads = StudioGame::Game.new("Knuckleheads")
10
+
11
+ # load in players from a csv file
12
+ puts "Loading players"
13
+ default_players_file = File.join(File.dirname(__FILE__), 'players.csv')
14
+ knuckleheads.load_players(ARGV.shift || default_players_file)
15
+
16
+ # throw in a clumsy player
17
+ klutz = StudioGame::ClumsyPlayer.new("klutz", 105)
18
+ knuckleheads.add_player(klutz)
19
+
20
+ # throw in a berserk player
21
+ berserker = StudioGame::BerserkPlayer.new("berserker", 50)
22
+ knuckleheads.add_player(berserker)
23
+
24
+ # start the game loop
25
+ loop do
26
+ puts "How many game rounds? ('quit' to exit)"
27
+ rounds = gets.chomp.downcase
28
+
29
+ case rounds
30
+ when /^\d+$/
31
+ knuckleheads.play(rounds.to_i)
32
+ when 'exit', 'quit'
33
+ knuckleheads.show_statistics
34
+ knuckleheads.save_high_scores
35
+ break
36
+ else
37
+ puts "Please enter a number or 'quit'"
38
+ end
39
+ end
@@ -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,34 @@
1
+ require_relative 'player'
2
+ module StudioGame
3
+ class BerserkPlayer < Player
4
+ def initialize(name, health)
5
+ @w00t_count = 0
6
+ super(name, health)
7
+ end
8
+
9
+ def w00t
10
+ super
11
+ @w00t_count += 1
12
+
13
+ if berserk?
14
+ puts "#{@name} is berserk!"
15
+ end
16
+
17
+ end
18
+
19
+ def blam
20
+ berserk? ? w00t : super
21
+ end
22
+
23
+ def berserk?
24
+ @w00t_count > 5
25
+ end
26
+ end
27
+
28
+ if __FILE__ == $0
29
+ berserker = BerserkPlayer.new("berserker", 50)
30
+ 6.times { berserker.w00t }
31
+ 2.times { berserker.blam }
32
+ puts berserker.health
33
+ end
34
+ end
@@ -0,0 +1,39 @@
1
+ require_relative 'player'
2
+ require_relative 'treasure_trove'
3
+
4
+ module StudioGame
5
+ class ClumsyPlayer < Player
6
+ def initialize(name, health=100, boost_factor=1)
7
+ @boost_factor = boost_factor
8
+ super(name, health)
9
+ end
10
+
11
+ def found_treasure(treasure)
12
+ damaged_treasure = Treasure.new(treasure.name, treasure.points / 2)
13
+ super(damaged_treasure)
14
+ end
15
+
16
+ def w00t
17
+ @boost_factor.times {super}
18
+ end
19
+
20
+ end
21
+
22
+ if __FILE__ == $0
23
+ clumsy = ClumsyPlayer.new("klutz", 105, 3)
24
+
25
+ hammer = Treasure.new(:hammer, 50)
26
+ clumsy.found_treasure(hammer)
27
+ clumsy.found_treasure(hammer)
28
+ clumsy.found_treasure(hammer)
29
+
30
+ crowbar = Treasure.new(:crowbar, 400)
31
+ clumsy.found_treasure(crowbar)
32
+
33
+ clumsy.each_found_treasure do |treasure|
34
+ puts "#{treasure.points} total #{treasure.name} points"
35
+ end
36
+ puts "#{clumsy.points} grand total points"
37
+ puts "#{clumsy.health} health"
38
+ end
39
+ 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,122 @@
1
+ require_relative 'player'
2
+ require_relative 'game_turn'
3
+ require_relative 'treasure_trove'
4
+
5
+ module StudioGame
6
+ class Game
7
+
8
+ def initialize(title)
9
+ @title = title
10
+ @players = []
11
+ end
12
+
13
+ def load_players(csv_file)
14
+ File.readlines(csv_file).each do |line|
15
+ name, health = line.split(',')
16
+ player = Player.new(name, Integer(health))
17
+ puts "Adding #{player.name} to the game"
18
+ add_player(player)
19
+ end
20
+ end
21
+
22
+ def save_high_scores(file_name='high_scores.txt')
23
+ sorted_players = @players.sort
24
+ File.open(file_name, 'w') do |file|
25
+ file.puts "Knuckleheads High Scores:"
26
+ file.puts formatted_scores
27
+ end
28
+ end
29
+
30
+ def add_player(player)
31
+ @players << player
32
+ end
33
+
34
+ def play(rounds)
35
+ puts "There are #{@players.size} players in #{@title}:"
36
+
37
+ @players.each do |player|
38
+ puts player
39
+ end
40
+
41
+ treasures = TreasureTrove::TREASURES
42
+
43
+ puts "\nThere are #{treasures.size} treasures to be found:"
44
+ treasures.each do |t|
45
+ puts "A #{t.name} is worth #{t.points} points"
46
+ end
47
+
48
+ 1.upto(rounds) do |round|
49
+ if block_given?
50
+ break if yield
51
+ end
52
+
53
+ puts "\nRound #{round}:"
54
+ @players.each do |player|
55
+ GameTurn.take_turn(player)
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ def show_statistics
62
+ # separate the strong from wimpy players
63
+ strong, wimpy = @players.partition {|p| p.strong?}
64
+
65
+ puts "\n#{@title}'s Statistics:"
66
+
67
+ # print out the strong players
68
+ puts "\n#{strong.size} strong players:"
69
+ strong.each do |p|
70
+ print_name_and_health(p)
71
+ end
72
+
73
+ # print out the wimpy players
74
+ puts "\n#{wimpy.size} wimpy players:"
75
+ wimpy.each do |p|
76
+ print_name_and_health(p)
77
+ end
78
+
79
+ # print out the high scores
80
+ puts "\n#{@title}'s High Scores:"
81
+ puts formatted_scores
82
+
83
+
84
+ # print out the total points per player
85
+ puts "\nPoint Totals:"
86
+ @players.each do |p|
87
+ puts "\n#{p.name}'s point totals:"
88
+ p.each_found_treasure do |treasure|
89
+ puts "#{treasure.points} total #{treasure.name} points"
90
+ end
91
+ puts "#{p.points} grand total points"
92
+ end
93
+
94
+ # print out the total treasure points found
95
+ puts "\n#{total_points} total points from treasures found"
96
+
97
+ end
98
+
99
+ def print_name_and_health(player)
100
+ puts "#{player.name} (#{player.health})"
101
+ end
102
+
103
+ def total_points
104
+ @players.reduce(0) do |sum, player|
105
+ sum += player.points
106
+ end
107
+ end
108
+
109
+ def formatted_scores
110
+ scores = ""
111
+ # sort the players based on their score
112
+ sorted_players = @players.sort
113
+
114
+ sorted_players.each do |p|
115
+ scores += "#{p.name}".ljust(25, '.') + "#{p.score}\n"
116
+ end
117
+
118
+ scores
119
+ end
120
+
121
+ end
122
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'die'
2
+ require_relative 'loaded_die'
3
+ require_relative 'player'
4
+ require_relative 'treasure_trove'
5
+
6
+ module StudioGame
7
+ module GameTurn
8
+ def self.take_turn(player)
9
+
10
+ #roll the die one time
11
+ die = Die.new
12
+
13
+ # based on the die roll the player either takes a hit, gets skipped, or
14
+ # gets w00ted
15
+ case die.roll
16
+ when 1..2
17
+ player.blam
18
+ when 3..4
19
+ puts "#{player.name} was skipped"
20
+ else
21
+ player.w00t
22
+ end
23
+
24
+ # pick a random treasure and give it to the player
25
+ player.found_treasure(TreasureTrove.random)
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'auditable'
2
+
3
+ module StudioGame
4
+ class LoadedDie
5
+ include Auditable
6
+
7
+ attr_reader :number
8
+
9
+ def roll
10
+ numbers = [1,1,2,5,6,6]
11
+ @number = numbers.sample
12
+ audit
13
+ @number
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module StudioGame
2
+ module Playable
3
+ def blam
4
+ self.health -= 10
5
+ puts "#{self.name} got blammed!"
6
+ end
7
+
8
+ def w00t
9
+ self.health += 15
10
+ puts "#{self.name} got w00ted!"
11
+ end
12
+
13
+ def strong?
14
+ return self.health > 100
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,53 @@
1
+ require_relative 'playable'
2
+ module StudioGame
3
+ class Player
4
+ include Playable
5
+ attr_accessor :name, :health
6
+
7
+ def initialize(name, health=100)
8
+ @name = name.capitalize
9
+ @health = health
10
+ @found_treasures = Hash.new(0)
11
+ end
12
+
13
+ def found_treasure(treasure)
14
+ @found_treasures[treasure.name] += treasure.points
15
+ puts "#{@name} found a #{treasure.name} worth #{treasure.points} points."
16
+ puts "#{name}'s treasures: #{@found_treasures}"
17
+ end
18
+
19
+ def points
20
+ @found_treasures.values.reduce(0, :+)
21
+ end
22
+
23
+ def each_found_treasure
24
+ @found_treasures.each do |name, points|
25
+ yield Treasure.new(name, points)
26
+ end
27
+
28
+ end
29
+
30
+ def score
31
+ @health + points
32
+ end
33
+
34
+ def to_s
35
+ "I'm #{@name} with a health = #{@health}, points = #{points}, and score = #{score}."
36
+ end
37
+
38
+ def <=>(other_player)
39
+ other_player.score <=> score
40
+ end
41
+
42
+ end
43
+
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
53
+ end
@@ -0,0 +1,19 @@
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
+
18
+ end
19
+ end
@@ -0,0 +1,30 @@
1
+ require 'studio_game/berserk_player'
2
+ module StudioGame
3
+ describe BerserkPlayer do
4
+
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
+ @player.berserk?.should be_false
14
+ end
15
+
16
+ it "goes berserk when w00ted more than 5 times" do
17
+ 1.upto(6) { @player.w00t }
18
+
19
+ @player.berserk?.should be_true
20
+ end
21
+
22
+ it "gets w00ted instead of blammed when it's gone berserk" do
23
+ 1.upto(6) { @player.w00t }
24
+ 1.upto(2) { @player.blam }
25
+
26
+ @player.health.should == @initial_health + (8 * 15)
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,33 @@
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
+ @player.points.should == 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
+ @player.points.should == 75
18
+
19
+ crowbar = Treasure.new(:crowbar, 400)
20
+ @player.found_treasure(crowbar)
21
+
22
+ @player.points.should == 275
23
+
24
+ yielded = []
25
+ @player.each_found_treasure do |treasure|
26
+ yielded << treasure
27
+ end
28
+
29
+ yielded.should == [Treasure.new(:hammer, 75), Treasure.new(:crowbar, 200)]
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,59 @@
1
+ require 'studio_game/game'
2
+
3
+ module StudioGame
4
+ describe Game do
5
+ before do
6
+ @game = Game.new("Knuckleheads")
7
+
8
+ @initial_health = 100
9
+ @player = Player.new("moe", @initial_health)
10
+
11
+ @game.add_player(@player)
12
+ end
13
+
14
+ it "w00ts the player when a high number is rolled" do
15
+ Die.any_instance.stub(:roll).and_return(5)
16
+ @game.play(2)
17
+ @player.health.should == @initial_health + (15 * 2)
18
+ end
19
+
20
+ it "skips the player when a medium number is rolled" do
21
+ Die.any_instance.stub(:roll).and_return(3)
22
+ @game.play(2)
23
+ @player.health.should == @initial_health
24
+ end
25
+
26
+ it "blams the player when a low number is rolled" do
27
+ Die.any_instance.stub(:roll).and_return(1)
28
+ @game.play(2)
29
+ @player.health.should == @initial_health - (10 * 2)
30
+ end
31
+
32
+ it "assigns a treasure for points during a player's turn" do
33
+ game = Game.new("Knuckleheads")
34
+ player = Player.new("moe")
35
+
36
+ game.add_player(player)
37
+ game.play(1)
38
+
39
+ player.points.should_not 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
+ game.total_points.should == 500
56
+ end
57
+
58
+ end
59
+ end
@@ -0,0 +1,97 @@
1
+ require 'studio_game/player'
2
+ require 'studio_game/treasure_trove'
3
+
4
+ module StudioGame
5
+ describe Player do
6
+
7
+ before do
8
+ @initial_health = 150
9
+ @player = Player.new("larry", @initial_health)
10
+ end
11
+
12
+ it "has a capitalized name" do
13
+ @player.name.should == "Larry"
14
+ end
15
+
16
+ it "has an initial health" do
17
+ @player.health.should == @initial_health
18
+ end
19
+
20
+ it "has a string representation" do
21
+ @player.found_treasure(Treasure.new(:hammer, 50))
22
+ @player.found_treasure(Treasure.new(:hammer, 50))
23
+ @player.to_s.should == "I'm Larry with a health = 150, points = 100, and score = 250."
24
+ end
25
+
26
+ it "computes a score as the sum of its health and points" do
27
+ @player.found_treasure(Treasure.new(:hammer, 50))
28
+ @player.found_treasure(Treasure.new(:hammer, 50))
29
+ @player.score.should == 250
30
+ end
31
+
32
+ it "increases health by 15 when w00ted" do
33
+ @player.w00t
34
+ @player.health.should == 165
35
+ end
36
+
37
+ it "decreases health by 10 when blammed" do
38
+ @player.blam
39
+ @player.health.should == 140
40
+ end
41
+
42
+ context "has health of 150" do
43
+ before do
44
+ @initial_health = 150
45
+ @player = Player.new("curley", @initial_health)
46
+ end
47
+
48
+ it "is a strong player" do
49
+ @player.should be_strong
50
+ end
51
+
52
+ it "computes points as the sum of all treasure points" do
53
+ @player.points.should == 0
54
+ @player.found_treasure(Treasure.new(:hammer, 50))
55
+ @player.points.should == 50
56
+ @player.found_treasure(Treasure.new(:crowbar, 400))
57
+ @player.points.should == 450
58
+ @player.found_treasure(Treasure.new(:hammer, 50))
59
+ @player.points.should == 500
60
+ end
61
+
62
+ it "yields each found treasure and its total points" do
63
+ @player.found_treasure(Treasure.new(:skillet, 100))
64
+ @player.found_treasure(Treasure.new(:skillet, 100))
65
+ @player.found_treasure(Treasure.new(:hammer, 50))
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
+ @player.found_treasure(Treasure.new(:bottle, 5))
70
+ @player.found_treasure(Treasure.new(:bottle, 5))
71
+
72
+ yielded = []
73
+ @player.each_found_treasure do |treasure|
74
+ yielded << treasure
75
+ end
76
+
77
+ yielded.should == [
78
+ Treasure.new(:skillet, 200),
79
+ Treasure.new(:hammer, 50),
80
+ Treasure.new(:bottle, 25)
81
+ ]
82
+ end
83
+ end
84
+
85
+ context "has health of 100" do
86
+ before do
87
+ @initial_health = 10
88
+ @player = Player.new("curley", @initial_health)
89
+ end
90
+
91
+ it "is not a strong player" do
92
+ @player.should_not be_strong
93
+ end
94
+
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,55 @@
1
+ require 'studio_game/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
+ @treasure.name.should == :hammer
12
+ end
13
+
14
+ it "has a points attribute" do
15
+ @treasure.points.should == 50
16
+ end
17
+
18
+ end
19
+
20
+ describe TreasureTrove do
21
+
22
+ it "has six treasures" do
23
+ TreasureTrove::TREASURES.size.should == 6
24
+ end
25
+
26
+ it "has a pie worth 5 points" do
27
+ TreasureTrove::TREASURES[0].should == Treasure.new(:pie, 5)
28
+ end
29
+
30
+ it "has a bottle worth 25 points" do
31
+ TreasureTrove::TREASURES[1].should == Treasure.new(:bottle, 25)
32
+ end
33
+
34
+ it "has a hammer worth 50 points" do
35
+ TreasureTrove::TREASURES[2].should == Treasure.new(:hammer, 50)
36
+ end
37
+
38
+ it "has a skillet worth 100 points" do
39
+ TreasureTrove::TREASURES[3].should == Treasure.new(:skillet, 100)
40
+ end
41
+
42
+ it "has a broomstick worth 200 points" do
43
+ TreasureTrove::TREASURES[4].should == Treasure.new(:broomstick, 200)
44
+ end
45
+
46
+ it "has a crowbar worth 400 points" do
47
+ TreasureTrove::TREASURES[5].should == Treasure.new(:crowbar, 400)
48
+ end
49
+
50
+ it "returns a random treasure" do
51
+ treasure = TreasureTrove.random
52
+ TreasureTrove::TREASURES.should include(treasure)
53
+ end
54
+ end
55
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: studio_game_wshaddix
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Wes Shaddix
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Some readme text
31
+ email: wshaddix@gmail.com
32
+ executables:
33
+ - studio_game
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - bin/players.csv
38
+ - bin/studio_game
39
+ - lib/studio_game/playable.rb
40
+ - lib/studio_game/game_turn.rb
41
+ - lib/studio_game/auditable.rb
42
+ - lib/studio_game/game.rb
43
+ - lib/studio_game/treasure_trove.rb
44
+ - lib/studio_game/player.rb
45
+ - lib/studio_game/loaded_die.rb
46
+ - lib/studio_game/clumsy_player.rb
47
+ - lib/studio_game/berserk_player.rb
48
+ - lib/studio_game/die.rb
49
+ - spec/studio_game/berserk_player_spec.rb
50
+ - spec/studio_game/treasure_trove_spec.rb
51
+ - spec/studio_game/player_spec.rb
52
+ - spec/studio_game/game_spec.rb
53
+ - spec/studio_game/clumsy_player_spec.rb
54
+ - LICENSE
55
+ - README
56
+ homepage: http://wesshaddix.com
57
+ licenses: []
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '1.9'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 1.8.24
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: A sample game built while learning ruby
80
+ test_files:
81
+ - spec/studio_game/berserk_player_spec.rb
82
+ - spec/studio_game/treasure_trove_spec.rb
83
+ - spec/studio_game/player_spec.rb
84
+ - spec/studio_game/game_spec.rb
85
+ - spec/studio_game/clumsy_player_spec.rb