pgm_knuck 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 367f9a41a961d45a6b899a2161d6fab3edd49993
4
+ data.tar.gz: 6a6b2457e2747d29a6d44d6193ddd24c5b565d20
5
+ SHA512:
6
+ metadata.gz: c0a744b0e143a7b5cca21e789f9e75eb75b9286960151c8f171f2aaa811163bb9cbd252f2640e20687d91c727658995733565375d68437dbfcaf06a439084516
7
+ data.tar.gz: 73981f967a5df29e569685c3d4ce5529fb629e443270ffb96b485af0ae93109ee918412377eddddd357a4485dc0bece9b70f7e3a4ccaf846729b873eff1aed9f
data/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Copyright (C) 2014 Andrew Ford
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
+ This game will eat your heart out and make you want to play it again and again. With limitless options decoupled with excellent code, you are going to want to take this baby to the bank as a template for the next World's Greatest Game. Change game options inside studio_game.rb. Poke around.
@@ -0,0 +1,3 @@
1
+ Andrew,100
2
+ Kailey,100
3
+ Elon,100
@@ -0,0 +1,33 @@
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
+ game = StudioGame::Game.new("Super Knuckleheads")
8
+
9
+ default_player_file =
10
+ File.join(File.dirname(__FILE__), 'players.csv')
11
+ game.load_players(ARGV.shift || default_player_file)
12
+
13
+ klutz = StudioGame::ClumsyPlayer.new("klutz", 105)
14
+ game.add_player(klutz)
15
+
16
+ berserker = StudioGame::BerserkPlayer.new("berserker", 50)
17
+ game.add_player(berserker)
18
+
19
+ loop do
20
+ puts "\nHow many game rounds? ('quit' to exit)"
21
+ answer = gets.chomp.downcase
22
+ case answer
23
+ when /^\d+$/
24
+ game.play(answer.to_i)
25
+ when 'quit', 'exit'
26
+ game.print_stats
27
+ break
28
+ else
29
+ puts "Please enter a number or 'quit'"
30
+ end
31
+ end
32
+
33
+ game.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,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
+ end
26
+
27
+ if __FILE__ == $0
28
+ berserker = BerserkPlayer.new("berserker", 50)
29
+ 6.times { berserker.w00t }
30
+ 2.times { berserker.blam }
31
+ puts berserker.health
32
+ end
@@ -0,0 +1,27 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+ class ClumsyPlayer < Player
5
+ def found_treasure(treasure)
6
+ damaged_treasure = Treasure.new(treasure.name, treasure.points/2.0)
7
+ super(damaged_treasure)
8
+ end
9
+ end
10
+
11
+ if __FILE__ == $0
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,19 @@
1
+ require_relative 'auditable'
2
+
3
+ module StudioGame
4
+ class Die
5
+ include Auditable
6
+
7
+ attr_reader :number
8
+
9
+ def initialize
10
+ roll
11
+ end
12
+
13
+ def roll
14
+ @number = rand(1..6)
15
+ audit
16
+ @number
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,110 @@
1
+ require_relative 'player'
2
+ require_relative 'game_turn'
3
+ require_relative 'treasure_trove'
4
+
5
+ module StudioGame
6
+
7
+ class Game
8
+ def initialize(title)
9
+ @title = title
10
+ @players = []
11
+ end
12
+
13
+ attr_reader :title
14
+
15
+ def load_players(from_file)
16
+ File.readlines(from_file).each do |line|
17
+ add_player(Player.from_csv(line))
18
+ end
19
+ end
20
+
21
+ def add_player(player)
22
+ @players << player
23
+ end
24
+
25
+ def strong_players
26
+ @players.select { |player| player.strong? }
27
+ end
28
+
29
+ def wimpy_players
30
+ @players.reject { |player| player.strong? }
31
+ end
32
+
33
+ def print_name_and_health(player)
34
+ puts "#{player.name} (#{player.health})"
35
+ end
36
+
37
+ def print_stats
38
+ puts "\n#{@title} Statisics:"
39
+
40
+ puts "#{strong_players.size} strong players:"
41
+ strong_players.each do |player|
42
+ print_name_and_health(player)
43
+ end
44
+
45
+ puts "#{wimpy_players.size} wimpy players:"
46
+ wimpy_players.each do |player|
47
+ print_name_and_health(player)
48
+ end
49
+
50
+ high_scores
51
+
52
+ @players.each do |player|
53
+ puts "#{player.name}'s point totals:"
54
+ puts "#{player.points} grand total points\n"
55
+ end
56
+
57
+ @players.sort.each do |player|
58
+ puts "\n#{player.name}'s point totals:"
59
+ player.each_found_treasure do |treasure|
60
+ puts "#{treasure.points} total #{treasure.name} points"
61
+ end
62
+ puts "#{player.points} grand total points"
63
+ end
64
+ end
65
+
66
+ def high_score_entry(player)
67
+ formatted_name = player.name.ljust(20, ".")
68
+ "#{formatted_name} #{player.score}"
69
+ end
70
+
71
+ def high_scores
72
+ puts "\n#{@title} High Scores:"
73
+
74
+ @players.sort.each do |player|
75
+ high_score_entry(player)
76
+ end
77
+ puts "\n"
78
+ end
79
+
80
+ def save_high_scores(to_file="high_scores.txt")
81
+ File.open(to_file, "w") do |file|
82
+ file.puts "#{@title} High Scores:"
83
+ @players.sort.each do |player|
84
+ file.puts high_score_entry(player)
85
+ end
86
+ end
87
+ end
88
+
89
+ def play(rounds)
90
+ puts "There are #{@players.size} players in #{@title}:"
91
+
92
+ @players.each do |player|
93
+ puts player
94
+ end
95
+
96
+ treasures = TreasureTrove::TREASURES
97
+ puts "\nThere are #{treasures.size} treasures to be found:"
98
+ treasures.each do
99
+ |treasure| puts "A #{treasure.name} is worth #{treasure.points} points."
100
+ end
101
+
102
+ 1.upto(rounds) do |round|
103
+ puts "\nRound #{round}:"
104
+ @players.each do |player|
105
+ GameTurn.take_turn(player)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,23 @@
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
+ def self.take_turn(player)
9
+ die = Die.new
10
+ case die.roll
11
+ when 1..2
12
+ player.blam
13
+ when 3..4
14
+ puts "#{player.name} was skipped."
15
+ else
16
+ player.w00t
17
+ end
18
+
19
+ treasure = TreasureTrove.random
20
+ player.found_treasure(treasure)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
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
+ end
16
+ end
17
+
18
+ if __FILE__ == $0
19
+ die = StudioGame::LoadedDie.new
20
+ puts die.roll
21
+ puts die.roll
22
+ puts die.roll
23
+ end
@@ -0,0 +1,18 @@
1
+
2
+ module StudioGame
3
+ module Playable
4
+ def w00t
5
+ self.health += 15
6
+ puts "#{name} got w00ted!"
7
+ end
8
+
9
+ def blam
10
+ self.health -= 10
11
+ puts "#{name} got blammed!"
12
+ end
13
+
14
+ def strong?
15
+ health > 100
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,63 @@
1
+ require_relative 'treasure_trove'
2
+ require_relative 'playable'
3
+
4
+ module StudioGame
5
+ class Player
6
+ include Playable
7
+
8
+ def initialize(name, health=100)
9
+ @name = name.capitalize
10
+ @health = health
11
+ @found_treasures = Hash.new(0)
12
+ end
13
+
14
+ attr_accessor :name, :health
15
+
16
+ def self.from_csv(string)
17
+ name, health = string.split(",")
18
+ Player.new(name, Integer(health))
19
+ end
20
+
21
+ def found_treasure(treasure)
22
+ @found_treasures[treasure.name] += treasure.points
23
+ puts "#{@name} found a #{treasure.name} worth #{treasure.points} points."
24
+ puts "#{@name}'s treasures: #{@found_treasures}"
25
+ end
26
+
27
+ def each_found_treasure
28
+ @found_treasures.each do |name, points|
29
+ yield(Treasure.new(name, points))
30
+ end
31
+ end
32
+
33
+ def points
34
+ @found_treasures.values.reduce(0, :+)
35
+ end
36
+
37
+ def name=(new_name)
38
+ @name = new_name.capitalize
39
+ end
40
+
41
+ def <=>(other)
42
+ other.score <=> score
43
+ end
44
+
45
+ def to_s
46
+ "I'm #{@name} with health = #{@health}, points = #{points}, and score = #{score}."
47
+ end
48
+
49
+ def score
50
+ @health + points
51
+ end
52
+ end
53
+ end
54
+
55
+ if __FILE__ == $0
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
@@ -0,0 +1,16 @@
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
+ def self.random
13
+ TREASURES.sample
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ module StudioGame
2
+ require 'studio_game/berserk_player'
3
+
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
+ @player.berserk?.should be_false
15
+ end
16
+
17
+ it "goes berserk when w00ted more than 5 times" do
18
+ 1.upto(6) { @player.w00t }
19
+
20
+ @player.berserk?.should be_true
21
+ end
22
+
23
+ it "gets w00ted instead of blammed when it's gone berserk" do
24
+ 1.upto(6) { @player.w00t }
25
+ 1.upto(2) { @player.blam }
26
+
27
+ @player.health.should == @initial_health + (8 * 15)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,32 @@
1
+ module StudioGame
2
+ require 'studio_game/clumsy_player'
3
+
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
+ end
32
+ end
@@ -0,0 +1,55 @@
1
+ module StudioGame
2
+ require 'studio_game/game'
3
+
4
+ describe Game do
5
+
6
+ before do
7
+ @game = Game.new("Knuckleheads")
8
+
9
+ @initial_health = 100
10
+ @rounds = 2
11
+ @player = Player.new("moe", @initial_health)
12
+
13
+ @game.add_player(@player)
14
+ end
15
+
16
+ it "has a title" do
17
+ @game.title.should == "Knuckleheads"
18
+ end
19
+
20
+ it "blams the player if a low number is rolled" do
21
+ Die.any_instance.stub(:roll).and_return(1)
22
+
23
+ @game.play(@rounds)
24
+
25
+ @player.health.should == @initial_health - (10 * 2)
26
+ end
27
+
28
+ it "skips a player if a medium number is rolled" do
29
+ Die.any_instance.stub(:roll).and_return(3)
30
+
31
+ @game.play(@rounds)
32
+
33
+ @player.health.should == @initial_health
34
+ end
35
+
36
+ it "w00ts the player if a high number is rolled" do
37
+ Die.any_instance.stub(:roll).and_return(6)
38
+
39
+ @game.play(@rounds)
40
+
41
+ @player.health.should == @initial_health + (15 * 2)
42
+ end
43
+
44
+ it "assigns a treasure for points during a player's turn" do
45
+ game = Game.new("Knuckleheads")
46
+ player = Player.new("moe")
47
+
48
+ game.add_player(player)
49
+
50
+ game.play(1)
51
+
52
+ player.points.should_not be_zero
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,134 @@
1
+ module StudioGame
2
+ require 'studio_game/player'
3
+
4
+ describe Player do
5
+
6
+ before do
7
+ @initial_health = 150
8
+ @player = Player.new("larry", @initial_health)
9
+ end
10
+
11
+ before do
12
+ $stdout = StringIO.new
13
+ end
14
+
15
+ it "can be created from a CSV" do
16
+ player = Player.from_csv("Kailey,100")
17
+
18
+ player.name.should == "Kailey"
19
+ player.health.should == 100
20
+ end
21
+
22
+ # def self.from_csv(csv)
23
+ # name, health = line.split(",")
24
+ # Player.new(name, Integer(health))
25
+ # end
26
+
27
+
28
+
29
+ it "has a capitalized name" do
30
+ @player.name.should == "Larry"
31
+ end
32
+
33
+ it "has an initial health" do
34
+ @player.health.should == 150
35
+ end
36
+
37
+ it "has a string representation" do
38
+ @player.found_treasure(Treasure.new(:hammer, 50))
39
+ @player.found_treasure(Treasure.new(:hammer, 50))
40
+
41
+ @player.to_s.should == "I'm Larry with health = 150, points = 100, and score = 250."
42
+ end
43
+
44
+ it "computes a score as the sum of its health and points" do
45
+ @player.found_treasure(Treasure.new(:hammer, 50))
46
+ @player.found_treasure(Treasure.new(:hammer, 50))
47
+
48
+ @player.score.should == 250
49
+ end
50
+
51
+ it "increased health by 15 when w00ted" do
52
+ @player.w00t
53
+ @player.health == @initial_health += 15
54
+ end
55
+
56
+ it "decreased health by 10 when blammed" do
57
+ @player.blam
58
+ @player.health == @initial_health -+ 10
59
+ end
60
+
61
+ it "computes points as the sum of all treasure points" do
62
+ @player.points.should == 0
63
+
64
+ @player.found_treasure(Treasure.new(:hammer, 50))
65
+
66
+ @player.points.should == 50
67
+
68
+ @player.found_treasure(Treasure.new(:crowbar, 400))
69
+
70
+ @player.points.should == 450
71
+
72
+ @player.found_treasure(Treasure.new(:hammer, 50))
73
+
74
+ @player.points.should == 500
75
+ end
76
+
77
+ it "yields each found treasure and its total points" do
78
+ @player.found_treasure(Treasure.new(:skillet, 100))
79
+ @player.found_treasure(Treasure.new(:skillet, 100))
80
+ @player.found_treasure(Treasure.new(:hammer, 50))
81
+ @player.found_treasure(Treasure.new(:bottle, 5))
82
+ @player.found_treasure(Treasure.new(:bottle, 5))
83
+ @player.found_treasure(Treasure.new(:bottle, 5))
84
+ @player.found_treasure(Treasure.new(:bottle, 5))
85
+ @player.found_treasure(Treasure.new(:bottle, 5))
86
+
87
+ yielded = []
88
+ @player.each_found_treasure do |treasure|
89
+ yielded << treasure
90
+ end
91
+
92
+ yielded.should == [
93
+ Treasure.new(:skillet, 200),
94
+ Treasure.new(:hammer, 50),
95
+ Treasure.new(:bottle, 25)
96
+ ]
97
+ end
98
+
99
+ context "with a health greater than 100" do
100
+ before do
101
+ @player = Player.new("larry", 150)
102
+ end
103
+
104
+ it "is strong" do
105
+ @player.should be_strong
106
+ end
107
+ end
108
+
109
+ context "with a health of 100" do
110
+ before do
111
+ @player = Player.new("larry", 100)
112
+ end
113
+
114
+ it "is weak" do
115
+ @player.should_not be_strong
116
+ end
117
+ end
118
+
119
+ context "in a collection of players" do
120
+ before do
121
+ @player1 = Player.new("moe", 100)
122
+ @player2 = Player.new("larry", 200)
123
+ @player3 = Player.new("curly", 300)
124
+
125
+ @players = [@player1, @player2, @player3]
126
+ end
127
+
128
+ it "is sorted by decreasing score" do
129
+ @players.sort.should == [@player3, @player2, @player1]
130
+ end
131
+ end
132
+ end
133
+ end
134
+
@@ -0,0 +1,56 @@
1
+ module StudioGame
2
+ require 'studio_game/treasure_trove'
3
+
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
+ it "returns a random treasure" do
19
+ treasure = TreasureTrove.random
20
+
21
+ TreasureTrove::TREASURES.should include(treasure)
22
+ end
23
+
24
+ end
25
+
26
+ describe TreasureTrove do
27
+
28
+ it "has six treasures" do
29
+ TreasureTrove::TREASURES.size.should == 6
30
+ end
31
+
32
+ it "has a pie worth 5 points" do
33
+ TreasureTrove::TREASURES[0].should == Treasure.new(:pie, 5)
34
+ end
35
+
36
+ it "has a bottle worth 25 points" do
37
+ TreasureTrove::TREASURES[1].should == Treasure.new(:bottle, 25)
38
+ end
39
+
40
+ it "has a hammer worth 50 points" do
41
+ TreasureTrove::TREASURES[2].should == Treasure.new(:hammer, 50)
42
+ end
43
+
44
+ it "has a skillet worth 100 points" do
45
+ TreasureTrove::TREASURES[3].should == Treasure.new(:skillet, 100)
46
+ end
47
+
48
+ it "has a broomstick worth 200 points" do
49
+ TreasureTrove::TREASURES[4].should == Treasure.new(:broomstick, 200)
50
+ end
51
+
52
+ it "has a crowbar worth 400 points" do
53
+ TreasureTrove::TREASURES[5].should == Treasure.new(:crowbar, 400)
54
+ end
55
+ end
56
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pgm_knuck
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Ford
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-07 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: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: 'This game will eat your heart out and make you want to play it again
28
+ and again. With limitless options decoupled with excellent code, you are going to
29
+ want to take this baby to the bank as a template for the next World''s Greatest
30
+ Game. Change game options inside studio_game.rb. Poke around. '
31
+ email: Ford.andrewid@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/auditable.rb
40
+ - lib/studio_game/berserk_player.rb
41
+ - lib/studio_game/clumsy_player.rb
42
+ - lib/studio_game/die.rb
43
+ - lib/studio_game/game.rb
44
+ - lib/studio_game/game_turn.rb
45
+ - lib/studio_game/loaded_die.rb
46
+ - lib/studio_game/playable.rb
47
+ - lib/studio_game/player.rb
48
+ - lib/studio_game/treasure_trove.rb
49
+ - spec/studio_game/berserk_player_spec.rb
50
+ - spec/studio_game/clumsy_player_spec.rb
51
+ - spec/studio_game/game_spec.rb
52
+ - spec/studio_game/player_spec.rb
53
+ - spec/studio_game/treasure_trove_spec.rb
54
+ - LICENSE
55
+ - README
56
+ homepage: http://barefootford.com
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '1.9'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 2.0.14
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: A text-based party game.
80
+ test_files:
81
+ - spec/studio_game/berserk_player_spec.rb
82
+ - spec/studio_game/clumsy_player_spec.rb
83
+ - spec/studio_game/game_spec.rb
84
+ - spec/studio_game/player_spec.rb
85
+ - spec/studio_game/treasure_trove_spec.rb