gary_studio_game 1.0.0
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 +7 -0
- data/LICENSE +0 -0
- data/README +0 -0
- data/bin/players.csv +3 -0
- data/bin/studio_game +88 -0
- data/lib/studio_game/auditable.rb +7 -0
- data/lib/studio_game/berserk_player.rb +38 -0
- data/lib/studio_game/clumsy_player.rb +39 -0
- data/lib/studio_game/die.rb +18 -0
- data/lib/studio_game/game.rb +122 -0
- data/lib/studio_game/game_turn.rb +24 -0
- data/lib/studio_game/loaded_die.rb +16 -0
- data/lib/studio_game/playable.rb +34 -0
- data/lib/studio_game/player.rb +66 -0
- data/lib/studio_game/treasure_trove.rb +20 -0
- data/spec/studio_game/berserk_player_spec.rb +37 -0
- data/spec/studio_game/clumsy_player_spec.rb +33 -0
- data/spec/studio_game/game_spec.rb +70 -0
- data/spec/studio_game/player_spec.rb +121 -0
- data/spec/studio_game/treasure_trove_spec.rb +60 -0
- metadata +82 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: bdc996100b6be28fc4dafac592ae3e1781d1d0cd
         | 
| 4 | 
            +
              data.tar.gz: 553c8b3842031800ea797bf37cdbb87a4e882b8e
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 2d4da0569ce5c3fcb936316ed7ea50154339aba9b439e90f585db2e4adc0f484626e616e0ccbb82138794d1887a1d638c8f8fe68866fca109b4a031374daf4aa
         | 
| 7 | 
            +
              data.tar.gz: a22ded46af32ab4e2f6860d16c86377ef644c8c7237bca023dd59e382021e47fc496b23e73baa441cbc54cb48f52a47659960ada989a36d5684f3281b0cafc5a
         | 
    
        data/LICENSE
    ADDED
    
    | 
            File without changes
         | 
    
        data/README
    ADDED
    
    | 
            File without changes
         | 
    
        data/bin/players.csv
    ADDED
    
    
    
        data/bin/studio_game
    ADDED
    
    | @@ -0,0 +1,88 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative '../lib/studio_game/player'
         | 
| 4 | 
            +
            require_relative '../lib/studio_game/clumsy_player'
         | 
| 5 | 
            +
            require_relative '../lib/studio_game/berserk_player'
         | 
| 6 | 
            +
            require_relative '../lib/studio_game/game'
         | 
| 7 | 
            +
            require_relative '../lib/studio_game/die'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
             | 
| 10 | 
            +
            #
         | 
| 11 | 
            +
            #player1 = Player.new("moe")
         | 
| 12 | 
            +
            #player2 = Player.new("Larry",60)
         | 
| 13 | 
            +
            #player3 = Player.new("Curly",125)
         | 
| 14 | 
            +
            #player4 = Player.new("gary",200)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            #player4 = ClumsyPlayer.new("klutz",105,5)
         | 
| 17 | 
            +
            #berserker = BerserkPlayer.new("berserker",50)
         | 
| 18 | 
            +
            knuckleheads = StudioGame::Game.new("Knuckleheads")
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            default_player_file = File.join(File.dirname(__FILE__), 'players.csv')
         | 
| 21 | 
            +
            knuckleheads.load_players(ARGV.shift ||default_player_file)
         | 
| 22 | 
            +
            #knuckleheads.add_player(player4)
         | 
| 23 | 
            +
            #knuckleheads.add_player(berserker)
         | 
| 24 | 
            +
            #knuckleheads.add_player(player1)
         | 
| 25 | 
            +
            #knuckleheads.add_player(player2)
         | 
| 26 | 
            +
            #knuckleheads.add_player(player3)
         | 
| 27 | 
            +
            #knuckleheads.add_player(player4)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
             | 
| 30 | 
            +
            loop do
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            puts "\nHow many game rounds? ('quit' to exit)"
         | 
| 33 | 
            +
            answer = gets.chomp.downcase
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            case answer
         | 
| 36 | 
            +
            	when /^\d+$/
         | 
| 37 | 
            +
            		knuckleheads.play(answer.to_i) 
         | 
| 38 | 
            +
            	when "quit","exit"
         | 
| 39 | 
            +
            		knuckleheads.print_stats
         | 
| 40 | 
            +
            		break
         | 
| 41 | 
            +
            	else
         | 
| 42 | 
            +
            		puts "\nPlease enter a number or 'quit'"
         | 
| 43 | 
            +
            	end
         | 
| 44 | 
            +
            end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            knuckleheads.save_high_scores("high_score.txt")
         | 
| 47 | 
            +
            #knuckleheads.play(10) do
         | 
| 48 | 
            +
            #  knuckleheads.total_points >= 2000
         | 
| 49 | 
            +
            #end
         | 
| 50 | 
            +
            #knuckleheads.print_stats
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            # player4 = Player.new("Gary")
         | 
| 53 | 
            +
            # player5 = Player.new("Greg",25)
         | 
| 54 | 
            +
            # yesmen = Game.new("Yesmen")
         | 
| 55 | 
            +
            # yesmen.add_player(player2)
         | 
| 56 | 
            +
            # yesmen.add_player(player4)
         | 
| 57 | 
            +
            # yesmen.add_player(player5)
         | 
| 58 | 
            +
            # yesmen.play
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            =begin
         | 
| 61 | 
            +
            	
         | 
| 62 | 
            +
            rescue Exception => e
         | 
| 63 | 
            +
            	
         | 
| 64 | 
            +
            end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
             | 
| 67 | 
            +
            player1.name = "Lawrence"
         | 
| 68 | 
            +
             | 
| 69 | 
            +
             | 
| 70 | 
            +
            # puts player1.health.to_s + "=#{player1.name}"
         | 
| 71 | 
            +
            # puts player2.health.to_s + "=#{player2.name}"
         | 
| 72 | 
            +
            # puts player3.health.to_s + "=#{player3.name}"
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            players = [player1, player2, player3]
         | 
| 75 | 
            +
             | 
| 76 | 
            +
             | 
| 77 | 
            +
            players.pop
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            player4 = Player.new("Shemp",90)
         | 
| 80 | 
            +
            players << player4
         | 
| 81 | 
            +
             | 
| 82 | 
            +
             | 
| 83 | 
            +
            puts "There are #{players.size} players in the game:"
         | 
| 84 | 
            +
            players.each do |name|
         | 
| 85 | 
            +
            	puts name
         | 
| 86 | 
            +
            end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            =end
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            require_relative 'player'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module StudioGame
         | 
| 4 | 
            +
            	class BerserkPlayer < Player
         | 
| 5 | 
            +
             | 
| 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 | 
            +
            			if berserk?
         | 
| 23 | 
            +
            				w00t
         | 
| 24 | 
            +
            			else
         | 
| 25 | 
            +
            				super
         | 
| 26 | 
            +
            			end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            		end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            	end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            	if __FILE__ == $0
         | 
| 33 | 
            +
            	  berserker = BerserkPlayer.new("berserker", 50)
         | 
| 34 | 
            +
            	  6.times { berserker.w00t }
         | 
| 35 | 
            +
            	  2.times { berserker.blam }
         | 
| 36 | 
            +
            	  puts berserker.health
         | 
| 37 | 
            +
            	end
         | 
| 38 | 
            +
            end
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            require_relative 'player'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module StudioGame
         | 
| 4 | 
            +
              class ClumsyPlayer < Player
         | 
| 5 | 
            +
                attr_reader :boost_factor
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              	def initialize(name,health=100,boost_factor=1)
         | 
| 8 | 
            +
                  super(name,health)
         | 
| 9 | 
            +
                  @boost_factor = boost_factor
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                def found_treasure(treasure)
         | 
| 13 | 
            +
              		damaged_treasure = Treasure.new(treasure.name, treasure.points / 2.0)
         | 
| 14 | 
            +
              		super(damaged_treasure)
         | 
| 15 | 
            +
              	end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def woot
         | 
| 18 | 
            +
                  @boost_factor.times {super}
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            if __FILE__ == $0
         | 
| 25 | 
            +
              clumsy = ClumsyPlayer.new("klutz", 105, 3)
         | 
| 26 | 
            +
              
         | 
| 27 | 
            +
              hammer = Treasure.new(:hammer, 50)
         | 
| 28 | 
            +
              clumsy.found_treasure(hammer)
         | 
| 29 | 
            +
              clumsy.found_treasure(hammer)
         | 
| 30 | 
            +
              clumsy.found_treasure(hammer)
         | 
| 31 | 
            +
              
         | 
| 32 | 
            +
              crowbar = Treasure.new(:crowbar, 400)
         | 
| 33 | 
            +
              clumsy.found_treasure(crowbar)
         | 
| 34 | 
            +
              
         | 
| 35 | 
            +
              clumsy.each_found_treasure do |treasure|
         | 
| 36 | 
            +
                puts "#{treasure.points} total #{treasure.name} points"
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
              puts "#{clumsy.points} grand total points"
         | 
| 39 | 
            +
            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 | 
            +
            		attr_reader :title
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		def initialize(title)
         | 
| 11 | 
            +
            			@title = title
         | 
| 12 | 
            +
            			@players = []
         | 
| 13 | 
            +
            		end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		def load_players(filename)
         | 
| 16 | 
            +
            			File.readlines(filename).each do |line|
         | 
| 17 | 
            +
            				#puts line
         | 
| 18 | 
            +
            				
         | 
| 19 | 
            +
            				add_player(Player.from_csv(line))
         | 
| 20 | 
            +
            			end
         | 
| 21 | 
            +
            		end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            		def save_high_scores(filename="high_scores.txt")
         | 
| 24 | 
            +
            			File.open(filename, "w") do |file|
         | 
| 25 | 
            +
            				file.puts "#{@title} High Scores:"
         | 
| 26 | 
            +
            				@players.sort.each do |player|
         | 
| 27 | 
            +
            					file.puts high_score_entry(player)
         | 
| 28 | 
            +
            				end
         | 
| 29 | 
            +
            			end
         | 
| 30 | 
            +
            		end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            		def high_score_entry(player)
         | 
| 33 | 
            +
            			format_string = "#{player.name}".ljust(25,".") + "#{player.health}"
         | 
| 34 | 
            +
            			format_string
         | 
| 35 | 
            +
            		end
         | 
| 36 | 
            +
            		
         | 
| 37 | 
            +
            		def add_player(player)
         | 
| 38 | 
            +
            			@players << player
         | 
| 39 | 
            +
            		end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
             | 
| 42 | 
            +
            		def play(rounds)
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            			#puts "There are #{@players.size} players in #{@title}:"
         | 
| 45 | 
            +
            	#		@players.each do |name|
         | 
| 46 | 
            +
            	#			puts name
         | 
| 47 | 
            +
            	#		end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            			1.upto(rounds) do |round|
         | 
| 50 | 
            +
            				if block_given?
         | 
| 51 | 
            +
            					if yield
         | 
| 52 | 
            +
            						break
         | 
| 53 | 
            +
            					end
         | 
| 54 | 
            +
            				end
         | 
| 55 | 
            +
            					
         | 
| 56 | 
            +
            				puts "\nRound No. #{round}"
         | 
| 57 | 
            +
            				@players.each do |player|
         | 
| 58 | 
            +
            					GameTurn.take_turn(player)
         | 
| 59 | 
            +
            					puts player
         | 
| 60 | 
            +
            				end
         | 
| 61 | 
            +
            			end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            			treasures = TreasureTrove::TREASURES
         | 
| 64 | 
            +
            			puts "\nThere are #{treasures.size} treasures to be found"
         | 
| 65 | 
            +
            			treasures.each do |treasure|
         | 
| 66 | 
            +
            				puts "A #{treasure.name} is worth #{treasure.points} points"
         | 
| 67 | 
            +
            			end
         | 
| 68 | 
            +
            				#if number_rolled >= 5	
         | 
| 69 | 
            +
            	#				player.w00t
         | 
| 70 | 
            +
            	#			elsif number_rolled <3 
         | 
| 71 | 
            +
            	#				player.blam
         | 
| 72 | 
            +
            	#			else
         | 
| 73 | 
            +
            	#				puts "#{player.name} is skipped"
         | 
| 74 | 
            +
            	#			end	
         | 
| 75 | 
            +
            				# 
         | 
| 76 | 
            +
            		end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            		def print_stats
         | 
| 79 | 
            +
            			puts "\nKnuckleheads Statistics:"
         | 
| 80 | 
            +
            			strong_players, wimpy_players = @players.partition {|player| player.strong?} 
         | 
| 81 | 
            +
            			
         | 
| 82 | 
            +
            			puts "\n#{strong_players.length} strong players:" 
         | 
| 83 | 
            +
            			strong_players.each do |player|
         | 
| 84 | 
            +
            				print_name_and_health(player)
         | 
| 85 | 
            +
            			end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            			puts "\n#{wimpy_players.length} wimpy players:" 
         | 
| 88 | 
            +
            			wimpy_players.each do |player|
         | 
| 89 | 
            +
            				print_name_and_health(player)
         | 
| 90 | 
            +
            			end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            			puts "\nKnuckleheads High Scores:"
         | 
| 93 | 
            +
            			@players.sort.each do |player|
         | 
| 94 | 
            +
            				puts high_score_entry(player)
         | 
| 95 | 
            +
            			end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            			@players.sort.each do |player|
         | 
| 98 | 
            +
            				puts "\n#{player.name}'s point totals:"
         | 
| 99 | 
            +
            				player.each_found_treasure do |treasure|
         | 
| 100 | 
            +
            					puts "#{treasure.name} = #{treasure.points}"
         | 
| 101 | 
            +
            				end
         | 
| 102 | 
            +
            				puts "#{player.points} grand total points"
         | 
| 103 | 
            +
            			end
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            			puts "Total treasure points found: #{total_points}"
         | 
| 106 | 
            +
             | 
| 107 | 
            +
            		end
         | 
| 108 | 
            +
             | 
| 109 | 
            +
            		def print_name_and_health(player)
         | 
| 110 | 
            +
            			puts "#{player.name} (#{player.health})" 
         | 
| 111 | 
            +
            		end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            		def total_points	
         | 
| 114 | 
            +
            			@players.reduce(0) {|sum,player| sum + player.points}
         | 
| 115 | 
            +
            		end
         | 
| 116 | 
            +
            	end
         | 
| 117 | 
            +
            end
         | 
| 118 | 
            +
             | 
| 119 | 
            +
            if __FILE__ == $0
         | 
| 120 | 
            +
            	test_game = Game.new("Testing the Game")
         | 
| 121 | 
            +
            	puts test_game.title
         | 
| 122 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 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 | 
            +
             | 
| 11 | 
            +
            			case die.roll 
         | 
| 12 | 
            +
            			when 5..6
         | 
| 13 | 
            +
            				player.w00t
         | 
| 14 | 
            +
            			when 3..4
         | 
| 15 | 
            +
            				puts "#{player.name} was skipped"
         | 
| 16 | 
            +
            			when 1..2
         | 
| 17 | 
            +
            				player.blam
         | 
| 18 | 
            +
            			end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            			treasure = TreasureTrove.random
         | 
| 21 | 
            +
            			player.found_treasure(treasure)
         | 
| 22 | 
            +
            		end
         | 
| 23 | 
            +
            	end
         | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            module StudioGame
         | 
| 2 | 
            +
            	module Playable
         | 
| 3 | 
            +
             | 
| 4 | 
            +
             | 
| 5 | 
            +
            		def blam
         | 
| 6 | 
            +
            			self.health -= 10
         | 
| 7 | 
            +
            			puts "#{name} got blammed!"
         | 
| 8 | 
            +
            		end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		def w00t	
         | 
| 11 | 
            +
            			self.health += 15
         | 
| 12 | 
            +
            			puts "#{name} got w00ted!"
         | 
| 13 | 
            +
            		end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		def strong?
         | 
| 16 | 
            +
            			health > 100
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            			#@health > 100 ? true : false
         | 
| 19 | 
            +
            			
         | 
| 20 | 
            +
            			#if @health <= 100
         | 
| 21 | 
            +
            	#			false
         | 
| 22 | 
            +
            	#		else
         | 
| 23 | 
            +
            	#			true
         | 
| 24 | 
            +
            	#		end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            			#case @health
         | 
| 27 | 
            +
            	#		when 1..100
         | 
| 28 | 
            +
            	#			false
         | 
| 29 | 
            +
            	#		when > 100
         | 
| 30 | 
            +
            	#			true
         | 
| 31 | 
            +
            	#		end
         | 
| 32 | 
            +
            		end
         | 
| 33 | 
            +
            	end
         | 
| 34 | 
            +
            end
         | 
| @@ -0,0 +1,66 @@ | |
| 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:health
         | 
| 15 | 
            +
            		attr_accessor :name
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            		def to_s
         | 
| 18 | 
            +
            			"I'm #{@name} with health = #{@health}, points = #{points}, and score = #{score}."
         | 
| 19 | 
            +
            			#{ }"I'm #{@name} with a health of #{@health} and a score of #{score}"
         | 
| 20 | 
            +
            		end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
             | 
| 23 | 
            +
             | 
| 24 | 
            +
            		def score
         | 
| 25 | 
            +
            			@health + points
         | 
| 26 | 
            +
            		end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            		def points
         | 
| 29 | 
            +
            			@found_treasures.values.reduce(0,:+)
         | 
| 30 | 
            +
            		end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
             | 
| 33 | 
            +
             | 
| 34 | 
            +
            		def <=>(other_player)
         | 
| 35 | 
            +
            			other_player.score <=> score
         | 
| 36 | 
            +
            		end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            		def found_treasure(treasure)
         | 
| 39 | 
            +
            			@found_treasures[treasure.name] += treasure.points
         | 
| 40 | 
            +
            			puts "#{@name} found a #{treasure.name} worth #{treasure.points} points"
         | 
| 41 | 
            +
            			puts "#{@name}'s treasures: #{@found_treasures}"
         | 
| 42 | 
            +
            		end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            		def each_found_treasure
         | 
| 45 | 
            +
            			@found_treasures.each do |name,points|
         | 
| 46 | 
            +
            				yield Treasure.new(name,points)
         | 
| 47 | 
            +
            			end
         | 
| 48 | 
            +
            		end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            		def self.from_csv(csv_string)
         | 
| 51 | 
            +
            			name,health = csv_string.split(",")
         | 
| 52 | 
            +
            			Player.new(name,Integer(health))
         | 
| 53 | 
            +
            		end
         | 
| 54 | 
            +
            	end
         | 
| 55 | 
            +
            end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
             | 
| 58 | 
            +
            if __FILE__ == $0
         | 
| 59 | 
            +
            	player = Player.new("moe")
         | 
| 60 | 
            +
            	puts player.name
         | 
| 61 | 
            +
            	puts player.health
         | 
| 62 | 
            +
            	player.w00t
         | 
| 63 | 
            +
            	puts player.health
         | 
| 64 | 
            +
            	player.blam
         | 
| 65 | 
            +
            	puts player.health
         | 
| 66 | 
            +
            end
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            Treasure = Struct.new(:name,:points)
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module StudioGame
         | 
| 4 | 
            +
            	module TreasureTrove
         | 
| 5 | 
            +
             | 
| 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 | 
            +
            		
         | 
| 19 | 
            +
            	end
         | 
| 20 | 
            +
            end
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            require 'studio_game/berserk_player'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module StudioGame
         | 
| 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 | 
            +
                  
         | 
| 16 | 
            +
                  # or if using Rspec 3.0:
         | 
| 17 | 
            +
                  # @player.berserk?.should be_falsey
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
                
         | 
| 20 | 
            +
                it "goes berserk when w00ted more than 5 times" do
         | 
| 21 | 
            +
                  1.upto(6) { @player.w00t }
         | 
| 22 | 
            +
                  
         | 
| 23 | 
            +
                  @player.berserk?.should be_true
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  # or if using Rspec 3.0:
         | 
| 26 | 
            +
                  # @player.berserk?.should be_truthy
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
                
         | 
| 29 | 
            +
                it "gets w00ted instead of blammed when it's gone berserk" do  
         | 
| 30 | 
            +
                  1.upto(6) { @player.w00t }
         | 
| 31 | 
            +
                  1.upto(2) { @player.blam }
         | 
| 32 | 
            +
                  
         | 
| 33 | 
            +
                  @player.health.should == @initial_health + (8 * 15)
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            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,70 @@ | |
| 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 "w00ts the player if a high number is rolled" do
         | 
| 16 | 
            +
                  Die.any_instance.stub(:roll).and_return(5)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  @game.play(2)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  @player.health.should == @initial_health + (15 * 2)
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                it "skips the player if a medium number is rolled" do
         | 
| 24 | 
            +
                  Die.any_instance.stub(:roll).and_return(3)
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  @game.play(2)
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  @player.health.should == @initial_health
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                it "blams the player if a low number is rolled" do
         | 
| 32 | 
            +
                  Die.any_instance.stub(:roll).and_return(1)
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  @game.play(2)
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  @player.health.should == @initial_health - (10 * 2)
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                it "assigns a treasure for points during a player's turn" do
         | 
| 40 | 
            +
                  game = Game.new("Knuckleheads")
         | 
| 41 | 
            +
                  player = Player.new("moe")
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  game.add_player(player)
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  game.play(1)
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  player.points.should_not be_zero
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  # or use alternate expectation syntax:
         | 
| 50 | 
            +
                  # expect(player.points).not_to be_zero
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                it "computes total points as the sum of all player points" do
         | 
| 54 | 
            +
                  game = Game.new("Knuckleheads")
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                  player1 = Player.new("moe")
         | 
| 57 | 
            +
                  player2 = Player.new("larry")
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                  game.add_player(player1)
         | 
| 60 | 
            +
                  game.add_player(player2)
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  player1.found_treasure(Treasure.new(:hammer, 50))
         | 
| 63 | 
            +
                  player1.found_treasure(Treasure.new(:hammer, 50))
         | 
| 64 | 
            +
                  player2.found_treasure(Treasure.new(:crowbar, 400))
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                  game.total_points.should == 500
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
            end
         | 
| @@ -0,0 +1,121 @@ | |
| 1 | 
            +
            require 'studio_game/player'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module StudioGame
         | 
| 4 | 
            +
            	describe Player do
         | 
| 5 | 
            +
            		before do
         | 
| 6 | 
            +
            			$stdout = StringIO.new
         | 
| 7 | 
            +
            			@initial_health = 150
         | 
| 8 | 
            +
            			@player = Player.new("larry",@initial_health)
         | 
| 9 | 
            +
            		end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            		it "yields a player object" do
         | 
| 12 | 
            +
            			player = Player.from_csv("gary,30")
         | 
| 13 | 
            +
            			player.name.should == "Gary"
         | 
| 14 | 
            +
            			player.health.should == 30
         | 
| 15 | 
            +
            		end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            		it "has a capitalized name" do
         | 
| 18 | 
            +
            			@player.name.should == "Larry"
         | 
| 19 | 
            +
            		end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            		it "has an initial health" do
         | 
| 22 | 
            +
            			@player.health.should == 150
         | 
| 23 | 
            +
            		end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            		it "has a string representation" do
         | 
| 26 | 
            +
            			@player.found_treasure(Treasure.new(:hammer, 50))
         | 
| 27 | 
            +
            			@player.found_treasure(Treasure.new(:hammer, 50))
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            			@player.to_s.should == "I'm Larry with health = 150, points = 100, and score = 250."
         | 
| 30 | 
            +
            		end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            		it "computes a score as the sum of its health and points" do
         | 
| 33 | 
            +
            		  @player.found_treasure(Treasure.new(:hammer, 50))
         | 
| 34 | 
            +
            		  @player.found_treasure(Treasure.new(:hammer, 50))
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            		  @player.score.should == 250
         | 
| 37 | 
            +
            		end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            		it "increases health by 15 when w00ted" do
         | 
| 40 | 
            +
            			@player.w00t
         | 
| 41 | 
            +
            			@player.health.should == 165
         | 
| 42 | 
            +
            		end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            		it "decreases health by 10 when blammed" do
         | 
| 45 | 
            +
            			@player.blam
         | 
| 46 | 
            +
            			@player.health.should == 140
         | 
| 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 "yields each found treasure and its total points" do
         | 
| 66 | 
            +
            		  @player.found_treasure(Treasure.new(:skillet, 100))
         | 
| 67 | 
            +
            		  @player.found_treasure(Treasure.new(:skillet, 100))
         | 
| 68 | 
            +
            		  @player.found_treasure(Treasure.new(:hammer, 50))
         | 
| 69 | 
            +
            		  @player.found_treasure(Treasure.new(:bottle, 5))
         | 
| 70 | 
            +
            		  @player.found_treasure(Treasure.new(:bottle, 5))
         | 
| 71 | 
            +
            		  @player.found_treasure(Treasure.new(:bottle, 5))
         | 
| 72 | 
            +
            		  @player.found_treasure(Treasure.new(:bottle, 5))
         | 
| 73 | 
            +
            		  @player.found_treasure(Treasure.new(:bottle, 5))
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            		  yielded = []
         | 
| 76 | 
            +
            		  @player.each_found_treasure do |treasure|
         | 
| 77 | 
            +
            		    yielded << treasure
         | 
| 78 | 
            +
            		  end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            		  yielded.should == [
         | 
| 81 | 
            +
            		    Treasure.new(:skillet, 200),
         | 
| 82 | 
            +
            		    Treasure.new(:hammer, 50),
         | 
| 83 | 
            +
            		    Treasure.new(:bottle, 25)
         | 
| 84 | 
            +
            		 ]
         | 
| 85 | 
            +
            		end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            		context "with a health greater than 100" do
         | 
| 88 | 
            +
            			before do
         | 
| 89 | 
            +
            				@player = Player.new("larry",150)
         | 
| 90 | 
            +
            			end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            			it "is strong" do
         | 
| 93 | 
            +
            				@player.should be_strong
         | 
| 94 | 
            +
            			end
         | 
| 95 | 
            +
            		end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            		context "with a health less than or equal to 100" do
         | 
| 98 | 
            +
            			before do
         | 
| 99 | 
            +
            				@player = Player.new("larry",100)
         | 
| 100 | 
            +
            			end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            			it "is is wimpy" do
         | 
| 103 | 
            +
            				@player.should_not be_strong
         | 
| 104 | 
            +
            			end
         | 
| 105 | 
            +
            		end
         | 
| 106 | 
            +
            		
         | 
| 107 | 
            +
            		context "in a collection of players" do
         | 
| 108 | 
            +
            		  before do
         | 
| 109 | 
            +
            		    @player1 = Player.new("moe", 100)
         | 
| 110 | 
            +
            		    @player2 = Player.new("larry", 200)
         | 
| 111 | 
            +
            		    @player3 = Player.new("curly", 300)
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            		    @players = [@player1, @player2, @player3]
         | 
| 114 | 
            +
            		  end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            		  it "is sorted by decreasing score" do
         | 
| 117 | 
            +
            		    @players.sort.should == [@player3, @player2, @player1]
         | 
| 118 | 
            +
            		  end
         | 
| 119 | 
            +
            		end
         | 
| 120 | 
            +
            	end
         | 
| 121 | 
            +
            end
         | 
| @@ -0,0 +1,60 @@ | |
| 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 | 
            +
                
         | 
| 55 | 
            +
                # or use alternate expectation syntax:
         | 
| 56 | 
            +
                # expect(TreasureTrove::TREASURES).to include(treasure)
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,82 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: gary_studio_game
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 1.0.0
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Gary Ravago
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2015-10-24 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: ''
         | 
| 28 | 
            +
            email: gary.ravago@gmail.com
         | 
| 29 | 
            +
            executables:
         | 
| 30 | 
            +
            - studio_game
         | 
| 31 | 
            +
            extensions: []
         | 
| 32 | 
            +
            extra_rdoc_files: []
         | 
| 33 | 
            +
            files:
         | 
| 34 | 
            +
            - bin/players.csv
         | 
| 35 | 
            +
            - bin/studio_game
         | 
| 36 | 
            +
            - lib/studio_game/auditable.rb
         | 
| 37 | 
            +
            - lib/studio_game/berserk_player.rb
         | 
| 38 | 
            +
            - lib/studio_game/clumsy_player.rb
         | 
| 39 | 
            +
            - lib/studio_game/die.rb
         | 
| 40 | 
            +
            - lib/studio_game/game.rb
         | 
| 41 | 
            +
            - lib/studio_game/game_turn.rb
         | 
| 42 | 
            +
            - lib/studio_game/loaded_die.rb
         | 
| 43 | 
            +
            - lib/studio_game/playable.rb
         | 
| 44 | 
            +
            - lib/studio_game/player.rb
         | 
| 45 | 
            +
            - lib/studio_game/treasure_trove.rb
         | 
| 46 | 
            +
            - spec/studio_game/berserk_player_spec.rb
         | 
| 47 | 
            +
            - spec/studio_game/clumsy_player_spec.rb
         | 
| 48 | 
            +
            - spec/studio_game/game_spec.rb
         | 
| 49 | 
            +
            - spec/studio_game/player_spec.rb
         | 
| 50 | 
            +
            - spec/studio_game/treasure_trove_spec.rb
         | 
| 51 | 
            +
            - LICENSE
         | 
| 52 | 
            +
            - README
         | 
| 53 | 
            +
            homepage: http://wordpress.squawkasian.com
         | 
| 54 | 
            +
            licenses:
         | 
| 55 | 
            +
            - MIT
         | 
| 56 | 
            +
            metadata: {}
         | 
| 57 | 
            +
            post_install_message: 
         | 
| 58 | 
            +
            rdoc_options: []
         | 
| 59 | 
            +
            require_paths:
         | 
| 60 | 
            +
            - lib
         | 
| 61 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 62 | 
            +
              requirements:
         | 
| 63 | 
            +
              - - '>='
         | 
| 64 | 
            +
                - !ruby/object:Gem::Version
         | 
| 65 | 
            +
                  version: '1.9'
         | 
| 66 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 67 | 
            +
              requirements:
         | 
| 68 | 
            +
              - - '>='
         | 
| 69 | 
            +
                - !ruby/object:Gem::Version
         | 
| 70 | 
            +
                  version: '0'
         | 
| 71 | 
            +
            requirements: []
         | 
| 72 | 
            +
            rubyforge_project: 
         | 
| 73 | 
            +
            rubygems_version: 2.0.14
         | 
| 74 | 
            +
            signing_key: 
         | 
| 75 | 
            +
            specification_version: 4
         | 
| 76 | 
            +
            summary: Gary's Studio Game Gem
         | 
| 77 | 
            +
            test_files:
         | 
| 78 | 
            +
            - spec/studio_game/berserk_player_spec.rb
         | 
| 79 | 
            +
            - spec/studio_game/clumsy_player_spec.rb
         | 
| 80 | 
            +
            - spec/studio_game/game_spec.rb
         | 
| 81 | 
            +
            - spec/studio_game/player_spec.rb
         | 
| 82 | 
            +
            - spec/studio_game/treasure_trove_spec.rb
         |