studio_game_ap 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 aarti@sachmanya.com
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,5 @@
1
+ # Play a game with multiple players, roll a die, a player gets blammed or w00ted and finds treasures and points
2
+
3
+ # to run
4
+
5
+ ./studio_game
@@ -0,0 +1,3 @@
1
+ Sachi,10
2
+ Maansi,30
3
+ Chintu,20
data/bin/players.csv ADDED
@@ -0,0 +1,3 @@
1
+ Alvin,100
2
+ Simon,60
3
+ Theo,125
@@ -0,0 +1,36 @@
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
+ default_player_file = File.join(File.dirname(__FILE__), 'players.csv')
8
+
9
+ knuckleheads = StudioGame::Game.new("Knuckleheads")
10
+ knuckleheads.load_players(ARGV.shift || default_player_file)
11
+ klutz = StudioGame::ClumsyPlayer.new("klutz", 105)
12
+ knuckleheads.add_player(klutz)
13
+ berserker = StudioGame::BerserkPlayer.new("berserker", 50)
14
+ knuckleheads.add_player(berserker)
15
+
16
+ loop do
17
+ puts "How many game rounds? ('quit' to exit)"
18
+ answer = gets.chomp.downcase
19
+
20
+ case answer
21
+ when /^\d+$/ then
22
+ knuckleheads.play(Integer(answer)) do
23
+ knuckleheads.total_points >= 2000
24
+ end
25
+ when "quit" || "exit" then
26
+ knuckleheads.print_stats
27
+ break
28
+ else
29
+ puts "Please enter a number or quit"
30
+ end
31
+
32
+ end
33
+
34
+ knuckleheads.save_high_scores
35
+
36
+
@@ -0,0 +1,10 @@
1
+ module StudioGame
2
+ module Auditable
3
+
4
+ def audit
5
+ puts "Rolled a #{self.number} (#{self.class})"
6
+ end
7
+
8
+ end
9
+ end
10
+
@@ -0,0 +1,32 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+
5
+ class BerserkPlayer < Player
6
+ def initialize( name, health=100)
7
+ super(name,health)
8
+ @w00t_count = 0
9
+ end
10
+
11
+ def berserk?
12
+ @w00t_count>5
13
+ end
14
+
15
+ def w00t
16
+ super
17
+ @w00t_count += 1
18
+ puts "#{@name} is berserk!" if berserk?
19
+ end
20
+
21
+ def blam
22
+ berserk? ? w00t : super
23
+ end
24
+ end
25
+
26
+ if __FILE__ == $0
27
+ berserker = BerserkPlayer.new("berserker", 50)
28
+ 6.times { berserker.w00t }
29
+ 2.times { berserker.blam }
30
+ puts berserker.health
31
+ end
32
+ end
@@ -0,0 +1,36 @@
1
+ require_relative 'player'
2
+ module StudioGame
3
+
4
+ class ClumsyPlayer < Player
5
+
6
+ def initialize(name, health=100, boostfactor=10)
7
+ super(name,health)
8
+ @boost_factor = boostfactor
9
+ end
10
+ def found_treasure(treasure)
11
+ super Treasure.new(treasure.name,treasure.points/2)
12
+ end
13
+
14
+ def w00t
15
+ @boost_factor.times { super }
16
+ end
17
+
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,16 @@
1
+ require_relative 'auditable'
2
+ module StudioGame
3
+ class Die
4
+ include Auditable
5
+ attr_reader :number
6
+
7
+ def initialize
8
+ roll
9
+ end
10
+ def roll
11
+ @number = rand(1..6)
12
+ audit
13
+ @number
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,84 @@
1
+ require_relative 'player'
2
+ require_relative 'die'
3
+ require_relative 'game_turn'
4
+ require_relative 'treasure_trove'
5
+
6
+
7
+ require 'csv'
8
+ module StudioGame
9
+
10
+ class Game
11
+
12
+ def initialize(name)
13
+ @name = name
14
+ @players =[]
15
+ end
16
+
17
+ def load_players(from_file)
18
+ CSV.foreach(from_file) do |line|
19
+ add_player( Player.new(line[0],Integer(line[1]) ))
20
+ end
21
+ end
22
+
23
+ def add_player(p)
24
+ @players << p
25
+ end
26
+ def total_points
27
+ @players.reduce(0) { |sum,p| sum + p.points }
28
+ end
29
+
30
+ def save_high_scores(to_file="high_scores.txt")
31
+ File.open(to_file, 'w') do |file|
32
+ file.puts("Knuckleheads High Scores:")
33
+ @players.sort.each { |player| file.puts player.to_csv}
34
+ end
35
+
36
+ end
37
+
38
+ def play(rounds)
39
+
40
+ puts "There are #{@players.size} players in #{@name}"
41
+ 1.upto(rounds) do |round|
42
+ if block_given?
43
+ break if yield
44
+ end
45
+
46
+ puts "Round #{round}\n"
47
+ @players.each do |p|
48
+ GameTurn.take_turn(p)
49
+ puts p
50
+ end
51
+ puts "#{total_points}"
52
+ end
53
+
54
+ def print_name_and_health (n)
55
+ "#{n.name} (#{n.health})\n"
56
+ end
57
+
58
+ def print_stats
59
+ puts "#{@name} Statistics\n\n"
60
+ strong,wimpy = @players.partition{ |p| p.strong? }
61
+ puts "#{strong.size} strong players\n"
62
+ strong.each { |n| puts print_name_and_health(n) }
63
+ wimpy.each { |n| puts print_name_and_health(n) }
64
+
65
+ puts "#{@name} High Scores:"
66
+ @players.sort.each do |p|
67
+ puts print_name_and_health(p)
68
+ end
69
+ @players.sort.each do |p|
70
+ puts "\n#{p.name}'s point totals:"
71
+ p.each_found_treasure do |treasure|
72
+ puts "#{treasure.points} total #{treasure.name} points"
73
+ end
74
+ puts "#{p.points} grand total"
75
+ end
76
+ puts "#{total_points} total points from treasures found"
77
+ end
78
+
79
+
80
+ end
81
+
82
+
83
+ end
84
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'player'
2
+ require_relative 'die'
3
+ require_relative 'loaded_die'
4
+ require_relative 'treasure_trove'
5
+
6
+ module StudioGame
7
+ module GameTurn
8
+
9
+ def self.take_turn(p)
10
+
11
+ number_rolled = Die.new().roll
12
+ case number_rolled
13
+ when 5..6 then p.w00t
14
+ when 3..4 then puts "#{p.name} was skipped."
15
+ when 1..2 then p.blam
16
+ end
17
+ treasure =TreasureTrove.random
18
+ p.found_treasure(treasure)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,16 @@
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
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ module StudioGame
2
+ module Playable
3
+ def blam
4
+ puts "#{self.name} got blamed!"
5
+ @health -=10
6
+ end
7
+
8
+ def w00t
9
+ puts "#{self.name} got w00ted!"
10
+ @health +=15
11
+ puts "#{self.health}"
12
+
13
+
14
+ end
15
+
16
+ def strong?
17
+ @health>100
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,68 @@
1
+ require_relative 'playable'
2
+ require_relative 'treasure_trove'
3
+
4
+
5
+ module StudioGame
6
+ class Player
7
+ include Playable
8
+
9
+ attr_accessor :name, :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 found_treasure(treasure)
18
+
19
+ @found_treasures[treasure.name] += treasure.points
20
+ puts "#{@name} found a #{treasure.name} worth #{treasure.points} points."
21
+ puts "#{@name}'s treasures: #{@found_treasures}"
22
+ end
23
+
24
+ def points
25
+ @found_treasures.values.reduce(0,:+)
26
+ end
27
+
28
+ def each_found_treasure
29
+ @found_treasures.each do |key,value|
30
+ yield Treasure.new(key,value)
31
+ end
32
+ end
33
+
34
+ def to_csv
35
+ "#{@name.ljust(20,'.')}#{points}"
36
+ end
37
+
38
+ def self.from_csv ( line )
39
+
40
+ name, health = line.split(",")
41
+ Player.new( name, Integer(health))
42
+ end
43
+
44
+
45
+ def score
46
+ @health + points
47
+ end
48
+ def to_s
49
+ "I'm #{@name} with health = #{@health}, points = #{points}, and score = #{score}."
50
+ end
51
+
52
+
53
+
54
+ def <=>(otherplayer)
55
+ otherplayer.score<=>score
56
+ end
57
+ end
58
+ end
59
+
60
+ if __FILE__ == $0
61
+ player = Player.new("moe")
62
+ puts player.name
63
+ puts player.health
64
+ player.w00t
65
+ puts player.health
66
+ player.blam
67
+ puts player.health
68
+ end
@@ -0,0 +1,20 @@
1
+ Treasure = Struct.new(:name, :points )
2
+
3
+ module StudioGame
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
+
15
+ def self.random
16
+ TREASURES.sample
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,32 @@
1
+ require 'studio_game/berserk_player'
2
+
3
+ module StudioGame
4
+
5
+ describe BerserkPlayer do
6
+
7
+ before do
8
+ @initial_health = 50
9
+ @player = BerserkPlayer.new("berserker", @initial_health)
10
+ end
11
+
12
+ it "does not go berserk when w00ted up to 5 times" do
13
+ 1.upto(5) { @player.w00t }
14
+
15
+ @player.berserk?.should be_false
16
+ end
17
+
18
+ it "goes berserk when w00ted more than 5 times" do
19
+ 1.upto(6) { @player.w00t }
20
+
21
+ @player.berserk?.should be_true
22
+ end
23
+
24
+ it "gets w00ted instead of blammed when it's gone berserk" do
25
+ 1.upto(6) { @player.w00t }
26
+ 1.upto(2) { @player.blam }
27
+
28
+ @player.health.should == @initial_health + (8 * 15)
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,43 @@
1
+ require 'studio_game/clumsy_player'
2
+
3
+ module StudioGame
4
+
5
+ describe ClumsyPlayer do
6
+ before do
7
+ @player = ClumsyPlayer.new("klutz")
8
+ end
9
+
10
+ it 'gets a boost every time it gets a w00t' do
11
+ @initial_health =105
12
+ @boost_factor =10
13
+ clumsy = ClumsyPlayer.new("klutz", @initial_health, @boost_factor)
14
+ clumsy.w00t
15
+ clumsy.health.should == @initial_health +@boost_factor*15
16
+
17
+ end
18
+
19
+ it "only gets half the point value for each treasure" do
20
+ @player.points.should == 0
21
+
22
+ hammer = Treasure.new(:hammer, 50)
23
+ @player.found_treasure(hammer)
24
+ @player.found_treasure(hammer)
25
+ @player.found_treasure(hammer)
26
+
27
+ @player.points.should == 75
28
+
29
+ crowbar = Treasure.new(:crowbar, 400)
30
+ @player.found_treasure(crowbar)
31
+
32
+ @player.points.should == 275
33
+
34
+ yielded = []
35
+ @player.each_found_treasure do |treasure|
36
+ yielded << treasure
37
+ end
38
+
39
+ yielded.should == [Treasure.new(:hammer, 75), Treasure.new(:crowbar, 200)]
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,61 @@
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 "computes total points as the sum of all player points" do
16
+ game = Game.new("Knuckleheads")
17
+
18
+ player1 = Player.new("moe")
19
+ player2 = Player.new("larry")
20
+
21
+ game.add_player(player1)
22
+ game.add_player(player2)
23
+
24
+ player1.found_treasure(Treasure.new(:hammer, 50))
25
+ player1.found_treasure(Treasure.new(:hammer, 50))
26
+ player2.found_treasure(Treasure.new(:crowbar, 400))
27
+
28
+ game.total_points.should == 500
29
+ end
30
+
31
+ it "assigns a treasure for points during a player's turn" do
32
+ game = Game.new("Knuckleheads")
33
+ player = Player.new("moe")
34
+
35
+ game.add_player(player)
36
+
37
+ game.play(1)
38
+
39
+ player.points.should_not be_zero
40
+ end
41
+ it "should increase the player's health by 15 if a high number is rolled" do
42
+ Die.any_instance.stub(:roll).and_return(5)
43
+ @game.play(1)
44
+ @player.health.should ==@initial_health +15
45
+ end
46
+
47
+ it "should keep the same health if a medium number is rolled" do
48
+ Die.any_instance.stub(:roll).and_return(4)
49
+ @game.play(2)
50
+ @player.health.should == @player.health
51
+ end
52
+
53
+ it "should decrease the health by 10 if a low number is rolled" do
54
+ Die.any_instance.stub(:roll).and_return(2)
55
+ @game.play(3)
56
+ @player.health.should == @initial_health -(10*3)
57
+ end
58
+
59
+
60
+ end
61
+ end
@@ -0,0 +1,131 @@
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 "load player from csv " do
13
+ myplayer = Player.from_csv("Sachi,10")
14
+ myplayer.name.should == "Sachi"
15
+ myplayer.health.should == 10
16
+
17
+ end
18
+
19
+ it "yields each found treasure and its total points" do
20
+ @player.found_treasure(Treasure.new(:skillet, 100))
21
+ @player.found_treasure(Treasure.new(:skillet, 100))
22
+ @player.found_treasure(Treasure.new(:hammer, 50))
23
+ @player.found_treasure(Treasure.new(:bottle, 5))
24
+ @player.found_treasure(Treasure.new(:bottle, 5))
25
+ @player.found_treasure(Treasure.new(:bottle, 5))
26
+ @player.found_treasure(Treasure.new(:bottle, 5))
27
+ @player.found_treasure(Treasure.new(:bottle, 5))
28
+
29
+ yielded = []
30
+ @player.each_found_treasure do |treasure|
31
+ yielded << treasure
32
+ end
33
+
34
+ yielded.should == [
35
+ Treasure.new(:skillet, 200),
36
+ Treasure.new(:hammer, 50),
37
+ Treasure.new(:bottle, 25)
38
+ ]
39
+ end
40
+
41
+
42
+ it "computes a score as the sum of its health and points" do
43
+ @player.found_treasure(Treasure.new(:hammer, 50))
44
+ @player.found_treasure(Treasure.new(:hammer, 50))
45
+
46
+ @player.score.should == 250
47
+ end
48
+
49
+ it "computes points as the sum of all treasure points" do
50
+ @player.points.should == 0
51
+
52
+ @player.found_treasure(Treasure.new(:hammer, 50))
53
+
54
+ @player.points.should == 50
55
+
56
+ @player.found_treasure(Treasure.new(:crowbar, 400))
57
+
58
+ @player.points.should == 450
59
+
60
+ @player.found_treasure(Treasure.new(:hammer, 50))
61
+
62
+ @player.points.should == 500
63
+ end
64
+
65
+ it "has a capitalized name" do
66
+
67
+ @player.name.should == "Larry"
68
+ end
69
+ it "has an initial health" do
70
+ @player.health.should ==150
71
+ end
72
+
73
+
74
+ it "has a string representation" do
75
+ @player.found_treasure(Treasure.new(:hammer, 50))
76
+ @player.found_treasure(Treasure.new(:hammer, 50))
77
+
78
+ @player.to_s.should == "I'm Larry with health = 150, points = 100, and score = 250."
79
+ end
80
+
81
+ it "computes a score as the sum of its health and length of name" do
82
+ @player.score.should == 150
83
+ end
84
+
85
+ it "increases health by 15 when w00ted" do
86
+ @player.w00t
87
+ @player.health.should == 165
88
+ end
89
+
90
+ it "decreases health by 10 when blammed" do
91
+ @player.blam
92
+ @player.health.should == 140
93
+
94
+ end
95
+
96
+ context "with a health greater than 100" do
97
+ before do
98
+ @player = Player.new("larry", 150)
99
+ end
100
+ it "is strong" do
101
+ @player.should be_strong
102
+ end
103
+
104
+ end
105
+
106
+ context "with a health less than 100" do
107
+ before do
108
+ @player = Player.new("larry", 90)
109
+ end
110
+ it "is not strong" do
111
+ @player.should_not be_strong
112
+ end
113
+
114
+ end
115
+ context "in a collection of players" do
116
+ before do
117
+ @player1 = Player.new("moe", 100)
118
+ @player2 = Player.new("larry", 200)
119
+ @player3 = Player.new("curly", 300)
120
+
121
+ @players = [@player1, @player2, @player3]
122
+ end
123
+
124
+ it "is sorted by decreasing score" do
125
+ @players.sort.should == [@player3, @player2, @player1]
126
+ end
127
+ end
128
+
129
+
130
+ end
131
+ end
@@ -0,0 +1,57 @@
1
+ require 'studio_game/treasure_trove'
2
+
3
+
4
+ module StudioGame
5
+ describe Treasure do
6
+
7
+ before do
8
+ @treasure = Treasure.new(:hammer, 50)
9
+ end
10
+
11
+ it "has a name attribute" do
12
+ @treasure.name.should == :hammer
13
+ end
14
+
15
+ it "has a points attribute" do
16
+ @treasure.points.should == 50
17
+ end
18
+
19
+ end
20
+
21
+ describe TreasureTrove do
22
+
23
+ it "has six treasures" do
24
+ TreasureTrove::TREASURES.size.should == 6
25
+ end
26
+
27
+ it "has a pie worth 5 points" do
28
+ TreasureTrove::TREASURES[0].should == Treasure.new(:pie, 5)
29
+ end
30
+
31
+ it "has a bottle worth 25 points" do
32
+ TreasureTrove::TREASURES[1].should == Treasure.new(:bottle, 25)
33
+ end
34
+
35
+ it "has a hammer worth 50 points" do
36
+ TreasureTrove::TREASURES[2].should == Treasure.new(:hammer, 50)
37
+ end
38
+
39
+ it "has a skillet worth 100 points" do
40
+ TreasureTrove::TREASURES[3].should == Treasure.new(:skillet, 100)
41
+ end
42
+
43
+ it "has a broomstick worth 200 points" do
44
+ TreasureTrove::TREASURES[4].should == Treasure.new(:broomstick, 200)
45
+ end
46
+
47
+ it "has a crowbar worth 400 points" do
48
+ TreasureTrove::TREASURES[5].should == Treasure.new(:crowbar, 400)
49
+ end
50
+ it "returns a random treasure" do
51
+ treasure = TreasureTrove.random
52
+
53
+ TreasureTrove::TREASURES.should include(treasure)
54
+ end
55
+
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: studio_game_ap
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - aarti
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-14 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: ! '# Play a game with multiple players, roll a die, a player gets
31
+ blammed or w00ted and finds treasures and points
32
+
33
+
34
+ # to run
35
+
36
+
37
+ ./studio_game'
38
+ email: aarti
39
+ executables:
40
+ - studio_game_ap
41
+ extensions: []
42
+ extra_rdoc_files: []
43
+ files:
44
+ - bin/my_fav_players.csv
45
+ - bin/players.csv
46
+ - bin/studio_game_ap
47
+ - lib/studio_game/auditable.rb
48
+ - lib/studio_game/berserk_player.rb
49
+ - lib/studio_game/clumsy_player.rb
50
+ - lib/studio_game/die.rb
51
+ - lib/studio_game/game.rb
52
+ - lib/studio_game/game_turn.rb
53
+ - lib/studio_game/loaded_die.rb
54
+ - lib/studio_game/playable.rb
55
+ - lib/studio_game/player.rb
56
+ - lib/studio_game/treasure_trove.rb
57
+ - spec/studio_game/berserk_player_spec.rb
58
+ - spec/studio_game/clumsy_player_spec.rb
59
+ - spec/studio_game/game_spec.rb
60
+ - spec/studio_game/player_spec.rb
61
+ - spec/studio_game/treasure_trove_spec.rb
62
+ - LICENSE
63
+ - README
64
+ homepage: http://kitereaders.com
65
+ licenses: []
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '1.9'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project:
84
+ rubygems_version: 1.8.22
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Fun Excercises from http://pragmaticstudio.com
88
+ test_files:
89
+ - spec/studio_game/berserk_player_spec.rb
90
+ - spec/studio_game/clumsy_player_spec.rb
91
+ - spec/studio_game/game_spec.rb
92
+ - spec/studio_game/player_spec.rb
93
+ - spec/studio_game/treasure_trove_spec.rb