mikesstudiogame 1.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.
data/LICENSE ADDED
@@ -0,0 +1,2 @@
1
+ (c) 2013 Mike Penhall
2
+ Based on a tutorial by Pragmatic Studio http://pragmaticstudio.com/
data/README ADDED
@@ -0,0 +1,3 @@
1
+ A game that generates random scores for players.
2
+
3
+ Type 'StudioGame' in command line to run.
@@ -0,0 +1,7 @@
1
+ Knuckleheads High Scores:
2
+ Berserker........... 545
3
+ Simon............... 480
4
+ Klutz............... 290.0
5
+ Superklutz.......... 257.5
6
+ Alvin............... 250
7
+ Theo................ 245
data/bin/iterators.rb ADDED
@@ -0,0 +1,21 @@
1
+ def conversation
2
+ puts "Hello"
3
+ yield
4
+ puts "Goodbye"
5
+ end
6
+
7
+ conversation { puts "Good to meet you!" }
8
+
9
+
10
+ def n_times(number)
11
+ 1.upto(number) do |n|
12
+ yield n
13
+ end
14
+ end
15
+
16
+ n_times(5) do |n|
17
+ puts "#{n} situps"
18
+ puts "#{n} pushups"
19
+ puts "#{n} chinups"
20
+ end
21
+
@@ -0,0 +1,4 @@
1
+ Dre, 15
2
+ Ren, 12
3
+ Cube, 4
4
+ Eazy,2
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,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/studio_game/clumsy_player'
4
+ require_relative '../lib/studio_game/berserk_player'
5
+ require_relative '../lib/studio_game/game'
6
+
7
+ # player1 = Player.new("moe")
8
+ # player2 = Player.new("larry",60)
9
+ # player3 = Player.new("curly",125)
10
+ # player4 = Player.new("shemp",90)
11
+ # players = [player1, player2, player3,player4]
12
+ # players.pop
13
+
14
+
15
+
16
+ knuckleheads = StudioGame::Game.new("Knuckleheads")
17
+
18
+ default_player_file = File.join(File.dirname(__FILE__), 'players.csv')
19
+ knuckleheads.load_players(ARGV.shift || default_player_file)
20
+
21
+ klutz = StudioGame::ClumsyPlayer.new("klutz",105)
22
+ knuckleheads.add_player(klutz)
23
+
24
+ superklutz = StudioGame::ClumsyPlayer.new("superklutz",105,3)
25
+ knuckleheads.add_player(superklutz)
26
+
27
+ berserker = StudioGame::BerserkPlayer.new("berserker", 50)
28
+ knuckleheads.add_player(berserker)
29
+
30
+ # players.each do |p|
31
+ # knuckleheads.add_player(p)
32
+ # end
33
+
34
+ loop do
35
+ puts "How many game rounds? ('quit' to exit)"
36
+ answer = gets.chomp.downcase
37
+ case answer
38
+ when /^\d+$/
39
+ knuckleheads.play(answer.to_i)
40
+ when 'quit','exit'
41
+ knuckleheads.print_treasures
42
+ knuckleheads.print_stats
43
+ break
44
+ else
45
+ "Please enter a valid number of rounds (or 'quit')"
46
+ end
47
+ end
48
+
49
+ knuckleheads.save_high_scores
50
+
51
+
52
+
53
+
54
+
@@ -0,0 +1,10 @@
1
+
2
+ module StudioGame
3
+ module Auditable
4
+
5
+ def audit
6
+ puts "Rolled a #{self.number} (#{self.class})"
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,36 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+ class BerserkPlayer < Player
5
+
6
+ def initialize(name, health)
7
+ super(name, health)
8
+ @w00t_count = 0
9
+ end
10
+
11
+ def w00t
12
+ super
13
+ @w00t_count += 1
14
+ puts "#{@name} is beserk!" if beserk?
15
+ end
16
+
17
+ def blam
18
+ if beserk?
19
+ w00t
20
+ else
21
+ super
22
+ end
23
+ end
24
+
25
+ def beserk?
26
+ @w00t_count > 5
27
+ end
28
+ end
29
+ end
30
+
31
+ if __FILE__ == $0
32
+ berserker = BerserkPlayer.new("berserker", 50)
33
+ 6.times { berserker.w00t }
34
+ 2.times { berserker.blam }
35
+ puts berserker.health
36
+ end
@@ -0,0 +1,40 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+ class ClumsyPlayer < Player
5
+
6
+ attr_reader :boost
7
+
8
+ def initialize(name, health, boost=1)
9
+ super(name,health)
10
+ @boost = boost
11
+ end
12
+
13
+ def found_treasure(treasure)
14
+ damaged = Treasure.new(treasure.name, treasure.points / 2.0)
15
+ super(damaged)
16
+ end
17
+
18
+ def w00t
19
+ (@boost).times { super }
20
+ end
21
+
22
+ end
23
+ end
24
+
25
+ if __FILE__ == $0
26
+ clumsy = ClumsyPlayer.new("klutz")
27
+
28
+ hammer = Treasure.new(:hammer, 50)
29
+ clumsy.found_treasure(hammer)
30
+ clumsy.found_treasure(hammer)
31
+ clumsy.found_treasure(hammer)
32
+
33
+ crowbar = Treasure.new(:crowbar, 400)
34
+ clumsy.found_treasure(crowbar)
35
+
36
+ clumsy.each_found_treasure do |treasure|
37
+ puts "#{treasure.points} total #{treasure.name} points"
38
+ end
39
+ puts "#{clumsy.points} grand total points"
40
+ end
@@ -0,0 +1,20 @@
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
+
19
+ end
20
+ end
@@ -0,0 +1,107 @@
1
+ require_relative 'player'
2
+ require_relative 'die'
3
+ require_relative 'game_turn'
4
+ require_relative 'treasure_trove'
5
+ require 'csv'
6
+
7
+ module StudioGame
8
+ class Game
9
+
10
+ def initialize(title)
11
+ @title = title.capitalize
12
+ @players = []
13
+ @die = Die.new
14
+ @game_total_points = 0
15
+ end
16
+
17
+ def add_player(player)
18
+ @players << player
19
+ end
20
+
21
+ def print_stats
22
+ puts "\n#{@title} Statistics:"
23
+ strong_players, weak_players = @players.partition {|p| p.strong?}
24
+ puts "\n#{strong_players.size} strong players:"
25
+ strong_players.each do |player|
26
+ print_name_and_health(player)
27
+ end
28
+ puts "\n#{weak_players.size} weak players:"
29
+ weak_players.each do |player|
30
+ print_name_and_health(player)
31
+ end
32
+ point_totals
33
+ get_high_scores
34
+ puts "\n#{game_total_points} total points from treasures found"
35
+ end
36
+
37
+ def get_high_scores
38
+ puts "\n#{@title} High Scores:"
39
+ @players.sort.each do |player|
40
+ puts high_score_string(player)
41
+ end
42
+ end
43
+
44
+ def high_score_string(player)
45
+ "#{player.name.ljust(20,'.')} #{player.score}"
46
+ end
47
+
48
+ def print_name_and_health(player)
49
+ puts "#{player.name} (#{player.health})"
50
+ end
51
+
52
+ def point_totals
53
+ @players.each do |p|
54
+ puts "\n#{p.name}'s point totals:"
55
+ p.each_found_treasure do |treasure|
56
+ puts "#{treasure.points} total #{treasure.name} points"
57
+ end
58
+
59
+ puts "#{p.points} grand total points"
60
+ end
61
+ end
62
+
63
+ def game_total_points
64
+ @players.reduce(0) {|sum, player| sum + player.points}
65
+ end
66
+
67
+ def play(rounds)
68
+ puts "There are #{@players.size} players in #{@title}"
69
+ @players.each do |p|
70
+ puts p
71
+ end
72
+ 1.upto(rounds) do |round|
73
+ if block_given?
74
+ break if yield
75
+ end
76
+ puts "\nRound #{round}"
77
+ @players.each do |p|
78
+ GameTurn.take_turn(p)
79
+ end
80
+ end
81
+ end
82
+
83
+ def print_treasures
84
+ treasures = TreasureTrove::TREASURES
85
+ puts "\nThere are #{treasures.size} available treasures:"
86
+ treasures.each do |t|
87
+ puts "#{t.name} (#{t.points} points)"
88
+ end
89
+ end
90
+
91
+ def load_players(file_name)
92
+ File.readlines(file_name).each do |line|
93
+ add_player(Player.from_csv(line))
94
+ end
95
+ end
96
+
97
+ def save_high_scores(file_name="high_scores.txt")
98
+ File.open(file_name, "w") do |file|
99
+ file.puts "#{@title} High Scores:"
100
+ @players.sort.each do |player|
101
+ file.puts high_score_string(player)
102
+ end
103
+ end
104
+ end
105
+
106
+ end
107
+ end
@@ -0,0 +1,25 @@
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(player)
10
+ die = Die.new
11
+ case die.roll
12
+ when 1..2
13
+ player.blam
14
+ when 3..4
15
+ puts "#{player.name} was skipped"
16
+ else
17
+ player.w00t
18
+ end
19
+ treasure = TreasureTrove.random
20
+ player.found_treasure(treasure)
21
+ end
22
+
23
+
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'auditable'
2
+
3
+ module StudioGame
4
+ class LoadedDie
5
+ include Auditable
6
+
7
+ attr_reader :number
8
+
9
+ def initialize
10
+ roll
11
+ end
12
+
13
+ def roll
14
+ numbers = [1, 1, 2, 5, 6, 6]
15
+ @number = numbers.sample
16
+ audit
17
+ @number
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ module StudioGame
2
+ module Playable
3
+
4
+ def strong?
5
+ health > 100
6
+ end
7
+
8
+ def blam
9
+ self.health -= 10
10
+ puts "#{name} got blammed!"
11
+ end
12
+
13
+ def w00t
14
+ self.health += 15
15
+ puts "#{name} got w00ted!"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,61 @@
1
+ require_relative 'treasure_trove'
2
+ require_relative 'playable'
3
+
4
+ module StudioGame
5
+ class Player
6
+ include Playable
7
+ attr_accessor :health
8
+ attr_accessor :name
9
+
10
+ def initialize(name, health=100)
11
+ @name = name.capitalize
12
+ @health = health
13
+ @found_treasures = Hash.new(0)
14
+ end
15
+
16
+ def <=>(other)
17
+ other.score <=> score
18
+ end
19
+
20
+ def to_s
21
+ "I'm #{@name} with a health of #{@health}, points of #{points} and a score of #{score}"
22
+ end
23
+
24
+ def score
25
+ @health + points
26
+ end
27
+
28
+ def found_treasure(treasure)
29
+ @found_treasures[treasure.name] += treasure.points
30
+ puts "#{@name} found a #{treasure.name} worth #{treasure.points} points"
31
+ puts "#{@name}'s treasures: #{@found_treasures}"
32
+ end
33
+
34
+ def points
35
+ @found_treasures.values.reduce(0,:+)
36
+ end
37
+
38
+ def each_found_treasure
39
+ @found_treasures.each do |name, points|
40
+ t = Treasure.new(name, points)
41
+ yield t
42
+ end
43
+ end
44
+
45
+ def self.from_csv(csv_string)
46
+ name, health = csv_string.split(",")
47
+ new(name, Integer(health))
48
+ end
49
+
50
+ end
51
+ end
52
+
53
+ if __FILE__ == $0
54
+ player = Player.new("moe")
55
+ puts player.name
56
+ puts player.health
57
+ player.w00t
58
+ puts player.health
59
+ player.blam
60
+ puts player.health
61
+ end
@@ -0,0 +1,19 @@
1
+ module StudioGame
2
+
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
+ ]
14
+
15
+ def self.random
16
+ TREASURES.sample
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ require 'studio_game/berserk_player'
2
+
3
+ module StudioGame
4
+ describe BerserkPlayer do
5
+
6
+ before do
7
+ @berserker = BerserkPlayer.new("berserker",50)
8
+ end
9
+
10
+ it "blams become w00ts after six w00ts" do
11
+ 6.times { @berserker.w00t }
12
+ 2.times { @berserker.blam }
13
+ @berserker.health.should == 170
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,52 @@
1
+ require 'studio_game/clumsy_player'
2
+
3
+ module StudioGame
4
+ describe ClumsyPlayer do
5
+
6
+ before do
7
+ @player = ClumsyPlayer.new("klutz",0)
8
+ end
9
+
10
+ it "only gets half the point value for each treasure" do
11
+ @player.points.should == 0
12
+
13
+ hammer = Treasure.new(:hammer, 50)
14
+ @player.found_treasure(hammer)
15
+ @player.found_treasure(hammer)
16
+ @player.found_treasure(hammer)
17
+
18
+ @player.points.should == 75
19
+
20
+ crowbar = Treasure.new(:crowbar, 400)
21
+ @player.found_treasure(crowbar)
22
+
23
+ @player.points.should == 275
24
+
25
+ yielded = []
26
+ @player.each_found_treasure do |treasure|
27
+ yielded << treasure
28
+ end
29
+
30
+ yielded.should == [Treasure.new(:hammer, 75), Treasure.new(:crowbar, 200)]
31
+ end
32
+
33
+ context "with boost factor" do
34
+ before do
35
+ @initial_health = 100
36
+ @boost = 5
37
+ @player = ClumsyPlayer.new("klutz", @initial_health, @boost)
38
+ end
39
+
40
+ it "has boost factor" do
41
+ @player.boost.should == 5
42
+ end
43
+
44
+ it "gets boost factor number of w00ts when w00ted" do
45
+ @player.w00t
46
+ @player.health.should == @initial_health + 15 * @boost
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,71 @@
1
+ require 'studio_game/game'
2
+
3
+ module StudioGame
4
+ describe Game do
5
+
6
+ before do
7
+ @game = Game.new("Knuckleheads")
8
+
9
+ @health = 100
10
+ @player = Player.new("moe", @health)
11
+
12
+ @game.add_player(@player)
13
+ $stdout = StringIO.new
14
+ end
15
+
16
+ it "rolls a high number" do
17
+ Die.any_instance.stub(:roll).and_return(5)
18
+
19
+ @game.play(2)
20
+
21
+ @player.health.should == @health + (15 * 2)
22
+
23
+ end
24
+
25
+ it "rolls a medium number" do
26
+ Die.any_instance.stub(:roll).and_return(3)
27
+
28
+ @game.play(2)
29
+
30
+ @player.health.should == @health
31
+
32
+ end
33
+
34
+ it "rolls a low number" do
35
+ Die.any_instance.stub(:roll).and_return(1)
36
+
37
+ @game.play(2)
38
+
39
+ @player.health.should == @health - (10 * 2)
40
+
41
+ end
42
+
43
+ it "assigns a treasure for points during a player's turn" do
44
+ game = Game.new("Knuckleheads")
45
+ player = Player.new("moe")
46
+
47
+ game.add_player(player)
48
+
49
+ game.play(1)
50
+
51
+ player.points.should_not be_zero
52
+ end
53
+
54
+ context "in a collection of players" do
55
+
56
+ before do
57
+ @player1 = Player.new("moe",100)
58
+ @player2 = Player.new("larry",200)
59
+ @player3 = Player.new("curly",300)
60
+
61
+ @players = [@player1, @player2, @player3]
62
+ end
63
+
64
+ it "is sorted by decreasing score" do
65
+ @players.sort.should == [@player3, @player2, @player1]
66
+ end
67
+
68
+ end
69
+
70
+ end
71
+ end
@@ -0,0 +1,112 @@
1
+ require 'studio_game/player'
2
+ require 'studio_game/treasure_trove'
3
+
4
+ module StudioGame
5
+ describe Player do
6
+
7
+ before do
8
+ player = Player.new("larry", 150)
9
+ @player = player
10
+ @health = @player.health
11
+ $stdout = StringIO.new
12
+ end
13
+
14
+ it "has capitalised name" do
15
+ @player.name.should == "Larry"
16
+ end
17
+
18
+ it "has an initial health" do
19
+ @player.health.should == 150
20
+ end
21
+
22
+ it "has a string representation" do
23
+ @player.found_treasure(Treasure.new(:hammer, 50))
24
+ @player.found_treasure(Treasure.new(:hammer, 50))
25
+
26
+ @player.to_s.should == "I'm Larry with a health of 150, points of 100 and a score of 250"
27
+ end
28
+
29
+ it "computes a score as the sum of its health and points" do
30
+ @player.found_treasure(Treasure.new(:hammer, 50))
31
+ @player.found_treasure(Treasure.new(:hammer, 50))
32
+
33
+ @player.score.should == 250
34
+ end
35
+
36
+ it "increases health by 15 when w00ted" do
37
+ @player.w00t
38
+ @player.health.should == @health + 15
39
+ end
40
+
41
+ it "decreases health by 10 when blammed" do
42
+ @player.blam
43
+ @player.health == @health - 10
44
+ end
45
+
46
+ it "computes points as the sum of all treasure points" do
47
+ @player.points.should == 0
48
+
49
+ @player.found_treasure(Treasure.new(:hammer, 50))
50
+
51
+ @player.points.should == 50
52
+
53
+ @player.found_treasure(Treasure.new(:crowbar, 400))
54
+
55
+ @player.points.should == 450
56
+
57
+ @player.found_treasure(Treasure.new(:hammer, 50))
58
+
59
+ @player.points.should == 500
60
+ end
61
+
62
+ it "can be created from a csv string" do
63
+ player = Player.from_csv("slim, 30")
64
+
65
+ player.name.should == "Slim"
66
+ player.health.should == 30
67
+ end
68
+
69
+ it "yields each found treasure and its total points" do
70
+ @player.found_treasure(Treasure.new(:skillet, 100))
71
+ @player.found_treasure(Treasure.new(:skillet, 100))
72
+ @player.found_treasure(Treasure.new(:hammer, 50))
73
+ @player.found_treasure(Treasure.new(:bottle, 5))
74
+ @player.found_treasure(Treasure.new(:bottle, 5))
75
+ @player.found_treasure(Treasure.new(:bottle, 5))
76
+ @player.found_treasure(Treasure.new(:bottle, 5))
77
+ @player.found_treasure(Treasure.new(:bottle, 5))
78
+
79
+ yielded = []
80
+ @player.each_found_treasure do |treasure|
81
+ yielded << treasure
82
+ end
83
+
84
+ yielded.should == [
85
+ Treasure.new(:skillet, 200),
86
+ Treasure.new(:hammer, 50),
87
+ Treasure.new(:bottle, 25)
88
+ ]
89
+ end
90
+
91
+ context "player with an initial health of 150" do
92
+ before do
93
+ @player = Player.new("jim", 150)
94
+ end
95
+
96
+ it "is a strong player" do
97
+ @player.should be_strong
98
+ end
99
+ end
100
+
101
+ context "with a health of 100 or less" do
102
+ before do
103
+ @player = Player.new("tim", 100)
104
+ end
105
+
106
+ it "is a weak player" do
107
+ @player.should_not be_strong
108
+ end
109
+ end
110
+
111
+ end
112
+ end
@@ -0,0 +1,57 @@
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
+
53
+ TreasureTrove::TREASURES.should include(treasure)
54
+ end
55
+
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mikesstudiogame
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mike Penhall
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-30 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: ! 'A game that generates random scores for players.
31
+
32
+
33
+ Type ''StudioGame'' in command line to run.'
34
+ email: mikepenhall@gmail.com
35
+ executables:
36
+ - studio_game
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - bin/high_scores.txt
41
+ - bin/iterators.rb
42
+ - bin/my_favourite_players.csv
43
+ - bin/players.csv
44
+ - bin/studio_game
45
+ - lib/studio_game/auditable.rb
46
+ - lib/studio_game/berserk_player.rb
47
+ - lib/studio_game/clumsy_player.rb
48
+ - lib/studio_game/die.rb
49
+ - lib/studio_game/game.rb
50
+ - lib/studio_game/game_turn.rb
51
+ - lib/studio_game/loaded_die.rb
52
+ - lib/studio_game/playable.rb
53
+ - lib/studio_game/player.rb
54
+ - lib/studio_game/treasure_trove.rb
55
+ - spec/studio_game/berserk_player_spec.rb
56
+ - spec/studio_game/clumsy_player_spec.rb
57
+ - spec/studio_game/game_spec.rb
58
+ - spec/studio_game/player_spec.rb
59
+ - spec/studio_game/treasure_trove_spec.rb
60
+ - LICENSE
61
+ - README
62
+ homepage: http://www.mikepenhall.com
63
+ licenses: []
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '1.9'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 1.8.24
83
+ signing_key:
84
+ specification_version: 3
85
+ summary: A game built as a demo using a Pragmatic Studio tutorial
86
+ test_files:
87
+ - spec/studio_game/berserk_player_spec.rb
88
+ - spec/studio_game/clumsy_player_spec.rb
89
+ - spec/studio_game/game_spec.rb
90
+ - spec/studio_game/player_spec.rb
91
+ - spec/studio_game/treasure_trove_spec.rb