pam_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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3775c44f2ea2c1654261975db73a52d41e995c03
4
+ data.tar.gz: 4637c01902dbb8ed1d6ee3d258d32cde25811eca
5
+ SHA512:
6
+ metadata.gz: 5373e5023ff76db7ef542e56fcab823a8d8308abbd1eaeff52126301bf4f3ce7999ebc2152ddad0e97c33d9903e733b8fbdfe78476dd68f619f5ede4d5355782
7
+ data.tar.gz: 396d2c1a671f029d5f5b7010a63a57891d4549ea3d96e0807a59be82ca497ef42128fa1f3747e51e82e072f802b666a006751bfffd34f539168fe04b41d7c73d
data/LICENSE ADDED
File without changes
data/README ADDED
File without changes
@@ -0,0 +1,3 @@
1
+ Alvin,100
2
+ Simon,60
3
+ Theo,125
@@ -0,0 +1,56 @@
1
+ require_relative '../lib/studio_game/game'
2
+ require_relative '../lib/studio_game/clumsy_player'
3
+ require_relative '../lib/studio_game/berserk_player'
4
+
5
+ knuckleheads = StudioGame::Game.new("test")
6
+ default_player_file = File.join(File.dirname(__FILE__), 'players.csv')
7
+ knuckleheads.load_players(ARGV.shift || default_player_file)
8
+
9
+ klutz = StudioGame::ClumsyPlayer.new("klutz", 105, 3)
10
+ knuckleheads.add_player(klutz)
11
+
12
+ berserker = StudioGame::BerserkPlayer.new("berserker", 50)
13
+ knuckleheads.add_player(berserker)
14
+
15
+
16
+ #player1 = Player.new("moe")
17
+ #player2 = Player.new("larry", 60)
18
+ #player3 = Player.new("curly", 125)
19
+ #player4 = Player.new("pam", 200)
20
+ #knuckleheads.add_player(player1)
21
+ #knuckleheads.add_player(player2)
22
+ #knuckleheads.add_player(player3)
23
+ #knuckleheads.add_player(player4)
24
+
25
+ loop do
26
+ puts "How many game round? ('quit' to exit)"
27
+ answer = gets.chomp.downcase
28
+ case answer
29
+ when /^\d+$/
30
+ knuckleheads.play(answer.to_i)
31
+ when 'quit', 'exit'
32
+ knuckleheads.print_stats
33
+ break
34
+ else
35
+ puts "Please enter a number or 'quit'"
36
+ end
37
+ end
38
+
39
+ knuckleheads.save_high_scores
40
+
41
+
42
+ #chipmunks = Game.new("Chipmunks")
43
+ #aPlayer = Player.new("alivin")
44
+ #sPlayer = Player.new("simon")
45
+ #tPlayer = Player.new("theodore")
46
+
47
+ #chipmunks.add_player(aPlayer)
48
+ #chipmunks.add_player(sPlayer)
49
+ #chipmunks.add_player(tPlayer)
50
+
51
+ #chipmunks.play
52
+
53
+
54
+
55
+
56
+
@@ -0,0 +1,58 @@
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
+ knuckleheads = StudioGame::Game.new("test")
8
+ default_player_file = File.join(File.dirname(__FILE__), 'players.csv')
9
+ knuckleheads.load_players(ARGV.shift || default_player_file)
10
+
11
+ klutz = StudioGame::ClumsyPlayer.new("klutz", 105, 3)
12
+ knuckleheads.add_player(klutz)
13
+
14
+ berserker = StudioGame::BerserkPlayer.new("berserker", 50)
15
+ knuckleheads.add_player(berserker)
16
+
17
+
18
+ #player1 = Player.new("moe")
19
+ #player2 = Player.new("larry", 60)
20
+ #player3 = Player.new("curly", 125)
21
+ #player4 = Player.new("pam", 200)
22
+ #knuckleheads.add_player(player1)
23
+ #knuckleheads.add_player(player2)
24
+ #knuckleheads.add_player(player3)
25
+ #knuckleheads.add_player(player4)
26
+
27
+ loop do
28
+ puts "How many game round? ('quit' to exit)"
29
+ answer = gets.chomp.downcase
30
+ case answer
31
+ when /^\d+$/
32
+ knuckleheads.play(answer.to_i)
33
+ when 'quit', 'exit'
34
+ knuckleheads.print_stats
35
+ break
36
+ else
37
+ puts "Please enter a number or 'quit'"
38
+ end
39
+ end
40
+
41
+ knuckleheads.save_high_scores
42
+
43
+
44
+ #chipmunks = Game.new("Chipmunks")
45
+ #aPlayer = Player.new("alivin")
46
+ #sPlayer = Player.new("simon")
47
+ #tPlayer = Player.new("theodore")
48
+
49
+ #chipmunks.add_player(aPlayer)
50
+ #chipmunks.add_player(sPlayer)
51
+ #chipmunks.add_player(tPlayer)
52
+
53
+ #chipmunks.play
54
+
55
+
56
+
57
+
58
+
@@ -0,0 +1,9 @@
1
+
2
+ module Auditable
3
+
4
+ def audit
5
+ puts "Rolled a #{self.number} (#{self.class})"
6
+
7
+ end
8
+
9
+ end
@@ -0,0 +1,47 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+ class BerserkPlayer < Player
5
+
6
+ def initialize(name, health)
7
+ super(name, health)
8
+ @woot_count = 0
9
+ end
10
+
11
+ def berserk?
12
+ @woot_count > 5
13
+ end
14
+
15
+ def wOOt
16
+ super
17
+ @woot_count += 1
18
+ if berserk?
19
+ puts "Berserker is berserk!"
20
+ end
21
+ end
22
+
23
+ def blam
24
+ if berserk?
25
+ wOOt
26
+ else
27
+ super
28
+ end
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+
35
+
36
+ if __FILE__ == $0
37
+ berserker = StudioGame::BerserkPlayer.new("berserker", 50)
38
+ 6.times { berserker.wOOt }
39
+ 2.times { berserker.blam }
40
+ puts berserker.health
41
+ end
42
+
43
+
44
+
45
+
46
+
47
+
@@ -0,0 +1,45 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+
5
+ class ClumsyPlayer < Player
6
+ attr_reader :boost
7
+
8
+ def initialize(name, health, boost=10)
9
+ super(name, health)
10
+ @boost = boost
11
+ end
12
+
13
+ def wOOt
14
+ @boost.times { super }
15
+ end
16
+
17
+ def found_treasure(treasure)
18
+ damaged_treasure = Treasure.new(treasure.name, treasure.points/2.0)
19
+ super damaged_treasure
20
+ # @found_treasures[treasure.name] += value
21
+ # puts("#{@name} found a #{treasure.name} worth #{value} points")
22
+ # puts("#{@name}'s treasures: #{@found_treasures}")
23
+ end
24
+
25
+ end
26
+
27
+
28
+ if __FILE__ == $0
29
+ clumsy = ClumsyPlayer.new("klutz")
30
+
31
+ hammer = Treasure.new(:hammer, 50)
32
+ clumsy.found_treasure(hammer)
33
+ clumsy.found_treasure(hammer)
34
+ clumsy.found_treasure(hammer)
35
+
36
+ crowbar = Treasure.new(:crowbar, 400)
37
+ clumsy.found_treasure(crowbar)
38
+
39
+ clumsy.each_found_treasure do |treasure|
40
+ puts "#{treasure.points} total #{treasure.name} points"
41
+ end
42
+ puts "#{clumsy.points} grand total points"
43
+ end
44
+
45
+ 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
+ end
19
+ end
20
+
@@ -0,0 +1,118 @@
1
+
2
+
3
+ require_relative 'player'
4
+ require_relative 'game_turn'
5
+ require_relative 'die'
6
+ require_relative 'treasure_trove'
7
+
8
+ module StudioGame
9
+ class Game
10
+ attr_reader :title
11
+
12
+ def initialize(name)
13
+ @title = name
14
+ @players = []
15
+ end
16
+
17
+
18
+
19
+ def load_players(file_name)
20
+
21
+ File.readlines(file_name).each do |line|
22
+ #puts line
23
+ add_player(Player.from_csv(line))
24
+
25
+ end
26
+ end
27
+
28
+ def save_high_scores(file_name = "high_scores.txt")
29
+ File.open(file_name, "w") do |file|
30
+ file.puts "#{title} High Scores:"
31
+ @players.sort.each do |p|
32
+ file.puts p.high_score_entry
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+
39
+ def add_player(player)
40
+ @players << player
41
+ end
42
+
43
+ def play(rounds)
44
+ puts "There are #{@players.size} players in #{@title} :"
45
+ @players.each do |p|
46
+ puts p
47
+ end
48
+
49
+ treasures = TreasureTrove::TREASURES
50
+ puts("\nWe have #{treasures.size} treasures")
51
+
52
+ treasures.each do |treasure|
53
+ puts("A #{treasure.name} is worth #{treasure.points} points")
54
+ end
55
+
56
+ 1.upto(rounds) do |round|
57
+ if block_given?
58
+ break if yield
59
+ end
60
+ puts "\n Round : #{round}"
61
+ @players.each do |p|
62
+ GameTurn.take_turn(p)
63
+ puts p
64
+ end
65
+
66
+ end
67
+ end
68
+
69
+ def total_points
70
+ @players.reduce(0) { |sum, player| sum + player.points}
71
+
72
+ end
73
+
74
+ def print_stats
75
+
76
+ sorted_players = @players.sort { |a, b| b.score <=> a.score }
77
+ puts "\n#{@title} High Scores:"
78
+ # sorted_players.each do |p|
79
+ # formatted_name = p.name.ljust(20, '.')
80
+ # puts "#{formatted_name} #{p.score}"
81
+
82
+ # end
83
+
84
+ @players.sort.each do |p|
85
+ puts p.high_score_entry
86
+ end
87
+
88
+
89
+ @players.sort.each do |p|
90
+ puts "\n#{p.name}'s point totals:"
91
+ p.each_found_treasure do |t|
92
+ puts "#{t.points} total #{t.name} points"
93
+ end
94
+ puts "#{p.points} grand total points"
95
+ end
96
+
97
+ strong, wimpy = @players.partition { |p| p.strong?}
98
+
99
+ puts("\n Strong players:")
100
+
101
+
102
+ strong.each do |p|
103
+ p.printStats
104
+
105
+
106
+ end
107
+
108
+ puts("\n Wimpy players:")
109
+ wimpy.each do |p|
110
+ p.printStats
111
+ end
112
+
113
+ puts("Total treasure points found during game = #{total_points}")
114
+ end
115
+
116
+
117
+ end
118
+ end
@@ -0,0 +1,25 @@
1
+ require_relative 'die'
2
+ require_relative 'loaded_die'
3
+ require_relative 'player'
4
+ require_relative 'treasure_trove'
5
+
6
+ module StudioGame
7
+ module GameTurn
8
+
9
+ def self.take_turn(player)
10
+ die = Die.new
11
+ number_rolled = die.roll
12
+ if number_rolled >4
13
+ player.wOOt
14
+ elsif number_rolled < 3
15
+ player.blam
16
+ else
17
+ puts "\n#{player.name} was skipped"
18
+ end
19
+
20
+ treasure = TreasureTrove.random
21
+ player.found_treasure(treasure)
22
+ puts("Player #{player.name} got treasure #{treasure.name} worth #{treasure.points} points")
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'auditable'
2
+
3
+ module StudioGame
4
+ class LoadedDie
5
+ include Auditable
6
+ attr_reader :number
7
+
8
+ def roll
9
+ numbers = [1, 1, 2, 5, 6, 6]
10
+ @number = numbers.sample
11
+ audit
12
+ @number
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+
2
+
3
+ module Playable
4
+
5
+ def wOOt()
6
+ self.health += 15
7
+ puts "#{self.name} got wOOted!"
8
+ end
9
+ def blam
10
+ self.health -= 10
11
+ puts "#{self.name} got blammed!"
12
+ end
13
+ def strong?
14
+
15
+ self.health > 100
16
+ end
17
+
18
+ end
@@ -0,0 +1,76 @@
1
+ require_relative 'treasure_trove'
2
+ require_relative 'playable'
3
+
4
+ module StudioGame
5
+ class Player
6
+
7
+ include Playable
8
+
9
+ attr_accessor :health
10
+ attr_accessor :name
11
+
12
+ def initialize(name, health = 100)
13
+ @name = name.capitalize
14
+ @health = health
15
+ @found_treasures = Hash.new(0)
16
+ end
17
+
18
+ def self.from_csv(line)
19
+
20
+ name, points = line.split(",")
21
+ Player.new(name, Integer(points))
22
+ end
23
+
24
+ def high_score_entry
25
+ formatted_name = @name.ljust(20, '.')
26
+ "#{formatted_name} #{score}"
27
+ end
28
+
29
+ def each_found_treasure
30
+ @found_treasures.each do |name, points|
31
+ yield Treasure.new(name, points)
32
+ end
33
+ end
34
+
35
+ def found_treasure(treasure)
36
+ @found_treasures[treasure.name] += treasure.points
37
+ puts("#{@name} found a #{treasure.name} worth #{treasure.points} points")
38
+ # puts("#{@name}'s treasures: #{@found_treasures}")
39
+ end
40
+
41
+ def points
42
+ @found_treasures.values.reduce(0, :+)
43
+ end
44
+
45
+
46
+
47
+ def name=(new_name)
48
+ @name = new_name.capitalize
49
+ end
50
+ def score
51
+ @health + points
52
+ end
53
+ def to_s()
54
+ "I'm #{@name} with a health = #{@health}, points = #{points}, and score = #{score}."
55
+ end
56
+
57
+ def <=>(other)
58
+ other.score <=> score
59
+ end
60
+ def printStats
61
+ puts "#{name} #{health}"
62
+ end
63
+
64
+ end
65
+
66
+ if __FILE__ == $0
67
+ player = Player.new("moe")
68
+ puts player.name
69
+ puts player.health
70
+ player.wOOt
71
+ puts player.health
72
+ player.blam
73
+ puts player.health
74
+ end
75
+
76
+ end
@@ -0,0 +1,18 @@
1
+
2
+ module StudioGame
3
+ Treasure = Struct.new(:name, :points)
4
+
5
+ module TreasureTrove
6
+ TREASURES = [Treasure.new(:pie, 5),
7
+ Treasure.new(:bottle, 25),
8
+ Treasure.new(:hammer, 50),
9
+ Treasure.new(:skillet, 100),
10
+ Treasure.new(:broomstick, 200),
11
+ Treasure.new(:crowbar, 400)]
12
+
13
+ def self.random
14
+ TREASURES.sample
15
+ end
16
+
17
+ end
18
+ 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.wOOt }
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.wOOt }
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.wOOt }
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,43 @@
1
+ require 'studio_game/clumsy_player'
2
+
3
+ module StudioGame
4
+ describe ClumsyPlayer do
5
+ before do
6
+ @player = ClumsyPlayer.new("klutz", 105, 3)
7
+ end
8
+
9
+ it "has a boost factor" do
10
+ @player.boost.should == 3
11
+ end
12
+
13
+ it "wOOt clumsy player shoud get * boost factor called" do
14
+ @player.wOOt
15
+
16
+ @player.health.should == 150
17
+ end
18
+
19
+ it "only gets half the point value for each treasure" do
20
+ @player.points.should == 0
21
+
22
+ hammer = Treasure.new(:hammer, 50)
23
+ @player.found_treasure(hammer)
24
+ @player.found_treasure(hammer)
25
+ @player.found_treasure(hammer)
26
+
27
+ @player.points.should == 75
28
+
29
+ crowbar = Treasure.new(:crowbar, 400)
30
+ @player.found_treasure(crowbar)
31
+
32
+ @player.points.should == 275
33
+
34
+ yielded = []
35
+ @player.each_found_treasure do |treasure|
36
+ yielded << treasure
37
+ end
38
+
39
+ yielded.should == [Treasure.new(:hammer, 75), Treasure.new(:crowbar, 200)]
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,67 @@
1
+ require 'studio_game/game'
2
+ require 'studio_game/die'
3
+
4
+
5
+ module StudioGame
6
+ describe Game do
7
+
8
+ before do
9
+ @game = Game.new("Knuckleheads")
10
+
11
+ @initial_health = 100
12
+ @player = Player.new("moe", @initial_health)
13
+
14
+ @game.add_player(@player)
15
+ end
16
+
17
+ it "high number is rolled" do
18
+ Die.any_instance.stub(:roll).and_return(5)
19
+ @game.play(2)
20
+ @player.health.should == @initial_health + (15 * 2)
21
+ end
22
+
23
+ it "medium number is rolled" do
24
+ Die.any_instance.stub(:roll).and_return(3)
25
+ @game.play(2)
26
+ @player.health.should == @initial_health
27
+
28
+ end
29
+
30
+ it "low number is rolled" do
31
+ Die.any_instance.stub(:roll).and_return(1)
32
+ @game.play(2)
33
+ @player.health.should == @initial_health - (10 * 2)
34
+ end
35
+
36
+ it "assigns a treasure for points during a player's turn" do
37
+ game = Game.new("Knuckleheads")
38
+ player = Player.new("moe")
39
+
40
+ game.add_player(player)
41
+
42
+ game.play(1)
43
+
44
+ player.points.should_not be_zero
45
+
46
+ # or use alternate expectation syntax:
47
+ # expect(player.points).not_to be_zero
48
+ end
49
+
50
+
51
+ it "computes total points as the sum of all player points" do
52
+ game = Game.new("Knuckleheads")
53
+
54
+ player1 = Player.new("moe")
55
+ player2 = Player.new("larry")
56
+
57
+ game.add_player(player1)
58
+ game.add_player(player2)
59
+
60
+ player1.found_treasure(Treasure.new(:hammer, 50))
61
+ player1.found_treasure(Treasure.new(:hammer, 50))
62
+ player2.found_treasure(Treasure.new(:crowbar, 400))
63
+
64
+ game.total_points.should == 500
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,139 @@
1
+ require 'studio_game/player'
2
+ require 'studio_game/treasure_trove'
3
+
4
+ module StudioGame
5
+ describe Player do
6
+
7
+ before do
8
+ $stdout = StringIO.new
9
+ @initialHealth = 150
10
+ @player = Player.new("larry", @initialHealth)
11
+ end
12
+
13
+
14
+ it "create player from csv line" do
15
+ player = Player.from_csv("test, 500")
16
+
17
+ player.name.should == "Test"
18
+ player.health.should == 500
19
+ end
20
+
21
+
22
+
23
+ it "yields each found treasure and its total points" do
24
+ @player.found_treasure(Treasure.new(:skillet, 100))
25
+ @player.found_treasure(Treasure.new(:skillet, 100))
26
+ @player.found_treasure(Treasure.new(:hammer, 50))
27
+ @player.found_treasure(Treasure.new(:bottle, 5))
28
+ @player.found_treasure(Treasure.new(:bottle, 5))
29
+ @player.found_treasure(Treasure.new(:bottle, 5))
30
+ @player.found_treasure(Treasure.new(:bottle, 5))
31
+ @player.found_treasure(Treasure.new(:bottle, 5))
32
+
33
+ yielded = []
34
+ @player.each_found_treasure do |treasure|
35
+ yielded << treasure
36
+ end
37
+
38
+ yielded.should == [
39
+ Treasure.new(:skillet, 200),
40
+ Treasure.new(:hammer, 50),
41
+ Treasure.new(:bottle, 25)
42
+ ]
43
+ end
44
+ it "has a capitalized name" do
45
+
46
+ @player.name.should == "Larry"
47
+
48
+ end
49
+
50
+ it "has an intital health" do
51
+
52
+ @player.health.should == @initialHealth
53
+ end
54
+
55
+ it "has a string representation" do
56
+ @player.found_treasure(Treasure.new(:hammer, 50))
57
+ @player.found_treasure(Treasure.new(:hammer, 50))
58
+
59
+
60
+ @player.to_s.should == "I'm Larry with a health = 150, points = 100, and score = 250."
61
+ end
62
+
63
+ it "computes a score as the sum of its health and points" do
64
+ @player.found_treasure(Treasure.new(:hammer, 50))
65
+ @player.found_treasure(Treasure.new(:hammer, 50))
66
+
67
+ @player.score.should == 250
68
+ end
69
+
70
+
71
+ it "increases health by 15 when wOOted" do
72
+
73
+ @player.wOOt
74
+ @player.health.should == @initialHealth + 15
75
+ end
76
+
77
+
78
+ it "decreases health by 10 when blammed" do
79
+
80
+ @player.blam
81
+ @player.health.should == @initialHealth - 10
82
+ end
83
+
84
+
85
+ it "computes points as the sum of all treasure points" do
86
+ @player.points.should == 0
87
+
88
+ @player.found_treasure(Treasure.new(:hammer, 50))
89
+
90
+ @player.points.should == 50
91
+
92
+ @player.found_treasure(Treasure.new(:crowbar, 400))
93
+
94
+ @player.points.should == 450
95
+
96
+ @player.found_treasure(Treasure.new(:hammer, 50))
97
+
98
+ @player.points.should == 500
99
+ end
100
+
101
+ context "strong player" do
102
+ before do
103
+ @player = Player.new("larry", 150)
104
+ end
105
+
106
+
107
+
108
+ it "shows if a player is strong" do
109
+ @player.should be_strong
110
+ end
111
+ end
112
+
113
+ context "wimpy player" do
114
+ before do
115
+ @player = Player.new("larry", 100)
116
+ end
117
+
118
+ it "shows player is a wimp" do
119
+ @player.should_not be_strong
120
+ end
121
+ end
122
+
123
+ context "in a collection of players" do
124
+ before do
125
+ @player1 = Player.new("moe", 100)
126
+ @player2 = Player.new("larry", 200)
127
+ @player3 = Player.new("curly", 300)
128
+
129
+ @players = [@player1, @player2, @player3]
130
+ end
131
+
132
+ it "is sorted by decreasing score" do
133
+ @players.sort.should == [@player3, @player2, @player1]
134
+ end
135
+ end
136
+
137
+
138
+ end
139
+ end
@@ -0,0 +1,51 @@
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
+ end
51
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pam_studio_game
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Pam Ouellette
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-04-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: pamouellette@tx.rr.com
29
+ executables:
30
+ - studio_game
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - LICENSE
35
+ - README
36
+ - bin/players.csv
37
+ - bin/studio_game
38
+ - bin/studio_game.rb
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
+ homepage: ''
55
+ licenses:
56
+ - MIT
57
+ metadata: {}
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '1.9'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 2.5.2
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: ''
78
+ test_files:
79
+ - spec/studio_game/berserk_player_spec.rb
80
+ - spec/studio_game/clumsy_player_spec.rb
81
+ - spec/studio_game/game_spec.rb
82
+ - spec/studio_game/player_spec.rb
83
+ - spec/studio_game/treasure_trove_spec.rb