Nicks_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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3cd8c4af724833befc90def692a9c282aef0f9d5d293a8a2dd3a38fbabd9e1a2
4
+ data.tar.gz: d8580b1f4e954327c0ee77d1ce6baa65eb120cac8119895fd33777e08cbae8b8
5
+ SHA512:
6
+ metadata.gz: a167386ada226c7a02b1dd81ae8e49707dc84b3426f8abece1a4322981b2611449eaaa07bf08596fc82b4e64aa81367a48ca6381a91bd805738c001b92020fcb
7
+ data.tar.gz: d8d2697b0b9b59e9bc3805b526e6bf69c0f46322c5c468b198488da32f9cad6cdd37869957a611ebcfbd731e8478860e7495ff1d86ae7a651b03fec60e54c0d4
data/LICENSE ADDED
@@ -0,0 +1,9 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Nickolas Teixeira
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
File without changes
@@ -0,0 +1,3 @@
1
+ Zume,10000
2
+ Dracula,40000000
3
+ Hulk,1
data/bin/players.csv ADDED
@@ -0,0 +1,6 @@
1
+ Alvin,100
2
+ Simon,60
3
+ Theo,125
4
+ Nick,100
5
+ Jeff,200
6
+ Matt,400
data/bin/studio_game ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../lib/studio_game/game'
3
+ game = StudioGame::Game.new("Nick\'s Game")
4
+ default_player_file = File.join(File.dirname(__FILE__), 'players.csv')
5
+ if ARGV.empty?
6
+ game.load_players([default_player_file])
7
+ else
8
+ game.load_players(ARGV)
9
+ end
10
+
11
+ loop do
12
+ puts "How many game rounds? (\"quit\" to exit)"
13
+ answer = $stdin.gets.chomp
14
+ case answer
15
+ when /^\d+$/
16
+ game.play(answer.to_i)
17
+ when "quit", "exit"
18
+ game.print_stats
19
+ break
20
+ else
21
+ puts "Please enter a valid number or \"quit\""
22
+ end
23
+ end
24
+
25
+ game.save_high_scores
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ module StudioGame
4
+ module GameTurn
5
+ def self.take_turn player
6
+ num = roll_dice
7
+ case num
8
+ when 1..2
9
+ player.blam
10
+ when 3..4
11
+ puts "#{player.name} was skipped.".center(40)
12
+ else
13
+ player.w00t
14
+ end
15
+ end
16
+
17
+ def self.roll_dice
18
+ rand(1..6)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative 'player'
4
+ require_relative 'treasure_trove'
5
+
6
+ module StudioGame
7
+ class BossPlayer < Player
8
+ def found_treasure treasure
9
+ points = treasure.points * 3
10
+ boss_treasure = Treasure.new(treasure.name, points)
11
+ super boss_treasure
12
+ end
13
+ end
14
+ end
15
+
16
+ if __FILE__ == $0
17
+ boss = BossPlayer.new("klutz")
18
+
19
+ hammer = Treasure.new(:hammer, 50)
20
+ boss.found_treasure(hammer)
21
+ boss.found_treasure(hammer)
22
+ boss.found_treasure(hammer)
23
+
24
+ bazooka = Treasure.new(:bazooka, 400)
25
+ boss.found_treasure(bazooka)
26
+
27
+ boss.each_found_treasure do |treasure|
28
+ puts "#{treasure.points} total #{treasure.name} points"
29
+ end
30
+ puts "#{boss.points} grand total points"
31
+ end
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative 'player'
3
+ require_relative 'GameTurn'
4
+ require_relative 'treasure_trove'
5
+
6
+ module StudioGame
7
+ class Game
8
+ attr_reader :name, :players
9
+ def initialize name
10
+ @name = name
11
+ @players = []
12
+ @number_players = 0
13
+ @center = 40
14
+ @alignment = 38
15
+ end
16
+ def add_player player
17
+ @players.push(player)
18
+ @number_players += 1
19
+ end
20
+
21
+ def print_game_intro
22
+ puts "-" * @center
23
+ puts "|" + "There are #{@number_players} players in #{@name}".center(@alignment) + "|"
24
+ puts "-" * @center
25
+ end
26
+ def print_game_number num
27
+ puts "*" * @center
28
+ puts "*" + "Playing Game #{num}.".center(@alignment) + "*"
29
+ puts "*" * @center
30
+ end
31
+ def play num_games
32
+ print_game_intro
33
+ print_all_treasures
34
+ 1.upto(num_games) do |num|
35
+ print_game_number(num)
36
+ @players.each do |player|
37
+ puts " #{player.name}'s Turn ".center(@center, "-")
38
+ player.found_treasure(find_random_treasures)
39
+ GameTurn.take_turn(player)
40
+ puts
41
+ end
42
+ end
43
+ print_high_scores
44
+ end
45
+
46
+ def find_random_treasures
47
+ treasures = TreasureTrove::TREASURES
48
+ treasures[rand(treasures.length)]
49
+ end
50
+ def print_all_treasures
51
+ treasures = TreasureTrove::TREASURES
52
+ puts "-" * @center
53
+ puts "|" + "There are #{treasures.length} treasures in this game".center(@alignment) + "|"
54
+ puts "-" * @center
55
+ treasures.each do |t|
56
+ puts "|" + "#{t.name} is worth #{t.points} points.".center(@alignment) + "|"
57
+ end
58
+ puts "-" * @center
59
+ end
60
+ def print_high_scores
61
+ puts "\nPrinting High Scores:"
62
+ high_scores = @players.sort{|a, b| b.score <=> a.score}
63
+ high_scores.each do |player|
64
+ puts "#{player.name}".ljust(@alignment, ".") + "#{player.score}"
65
+ end
66
+ puts "\nTotal Points accumulated #{total_points} from Treasure Trove\n\n"
67
+ end
68
+
69
+ def print_weak_strong
70
+ strong, weak = @players.partition{|n| n.strong?}
71
+ puts "Top #{strong.length} STRONG players."
72
+ puts strong.sort
73
+ puts "\nTop #{weak.length} WEAK players."
74
+ puts weak.sort
75
+ puts
76
+ end
77
+
78
+ def print_player_stats
79
+ @players.sort.each do |player|
80
+ puts " Player #{player.name}'s point breakdown ".center(@center, "*")
81
+ puts "-" * @center
82
+ player.each_found_treasure do |treasure|
83
+ puts "|" + "#{treasure.name} #{treasure.points} points".center(@alignment) + "|"
84
+ end
85
+ puts "-" * @center
86
+ puts "#{player.name}'s total points: #{player.points}"
87
+ puts "#{player.name}'s total health: #{player.health}"
88
+ puts
89
+ end
90
+ end
91
+ def print_stats_header
92
+ puts "-" * @center
93
+ puts "|" + "#{@name} Statistics".center(@alignment) + "|"
94
+ puts "-" * @center
95
+ end
96
+ def print_stats
97
+ print_stats_header
98
+ print_weak_strong
99
+ print_player_stats
100
+ end
101
+ def total_points
102
+ @players.reduce(0) { |sum, player| sum + player.points }
103
+ end
104
+
105
+ def load_players array
106
+ array.each do |file|
107
+ File.readlines(file).each do |line|
108
+ name, health = line.split(",")
109
+ add_player(Player.new(name, Integer(health)))
110
+ end
111
+ end
112
+ end
113
+ def save_high_scores file_name="high_scores.txt"
114
+ File.open(file_name, "w") do |fd|
115
+ fd.puts "#{@name} High Scores:"
116
+ @players.sort.each do |player|
117
+ fd.puts "#{player.name},#{player.score}"
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
123
+
124
+ if __FILE__ == $0
125
+ @game = Game.new("Knuckleheads")
126
+ @initial_health = 100
127
+ @player = Player.new("jeff", @initial_health)
128
+ @player2 = Player.new("nick", @initial_health)
129
+ @game.add_player(@player)
130
+ @game.add_player(@player2)
131
+ @game.play(2)
132
+ @game.print_stats
133
+ end
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+ # it's generally considered a better design if mixins rely on
3
+ # attributes (getter and setter methods) rather than instance variables.
4
+ # That way, if an instance variable changes it doesn't break the mixin.
5
+
6
+ module StudioGame
7
+ module Playable
8
+ def w00t
9
+ puts "#{name} got w00ted!".center(40)
10
+ self.health += 15
11
+ end
12
+
13
+ def blam
14
+ puts "#{name} got blammed!".center(40)
15
+ self.health -= 10
16
+ end
17
+
18
+ def strong?
19
+ self.health > 100 ? true : false
20
+ end
21
+
22
+ def weak?
23
+ self.health <= 100 ? true : false
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative 'playable'
3
+
4
+ module StudioGame
5
+ class Player
6
+ include Playable
7
+ attr_accessor :name, :health, :score
8
+ def initialize name, health=100, score=0
9
+ @name = name.capitalize
10
+ @health = health
11
+ @found_treasures = Hash.new(0)
12
+ @score = @name.length + @health
13
+ end
14
+
15
+ def to_s
16
+ "I'm #{@name} with a health of #{@health} and a score of #{score}"
17
+ end
18
+
19
+ def random_score
20
+ rand(1..100)
21
+ end
22
+ def use_special_attack opponent
23
+ if opponent.health
24
+ value = random_score
25
+ opponent.health -= value
26
+ puts "Special attack used on #{opponent.name}"
27
+ else
28
+ puts "Cannot attack this player"
29
+ end
30
+ end
31
+
32
+ def <=> other
33
+ other.score <=> @score
34
+ end
35
+
36
+ def points
37
+ @found_treasures.values.reduce(0, :+)
38
+ end
39
+
40
+ def score
41
+ @health + points
42
+ end
43
+
44
+ def found_treasure treasure
45
+ puts "#{@name} found a #{treasure.name} worth #{treasure.points}.".center(40)
46
+ @found_treasures[treasure.name] += treasure.points
47
+ puts "#{@name}'s treasures #{@found_treasures}.".center(40)
48
+ end
49
+
50
+ def each_found_treasure
51
+ @found_treasures.each do |name, points|
52
+ yield Treasure.new(name, points)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative 'player'
3
+ require_relative 'treasure_trove'
4
+
5
+ module StudioGame
6
+ class SuperBossPlayer < Player
7
+ def initialize name, health=100
8
+ super(name, health)
9
+ @w00t_count = 0
10
+ end
11
+
12
+ def berserk?
13
+ @w00t_count >= 5
14
+ end
15
+
16
+ def w00t
17
+ super
18
+ @w00t_count += 1
19
+ puts "#{@name} is berserk! Health will increase if blammed." if berserk?
20
+ end
21
+ def blam
22
+ berserk? ? w00t : super
23
+ end
24
+ def found_treasure treasure
25
+ points = treasure.points * 1000
26
+ boss_treasure = Treasure.new(treasure.name, points)
27
+ super boss_treasure
28
+ end
29
+ end
30
+ end
31
+
32
+ if __FILE__ == $0
33
+ boss = SuperBossPlayer.new("matt")
34
+
35
+ hammer = Treasure.new(:hammer, 50)
36
+ boss.found_treasure(hammer)
37
+ boss.found_treasure(hammer)
38
+ boss.found_treasure(hammer)
39
+
40
+ bazooka = Treasure.new(:bazooka, 400)
41
+ boss.found_treasure(bazooka)
42
+
43
+ boss.each_found_treasure do |treasure|
44
+ puts "#{treasure.points} total #{treasure.name} points"
45
+ end
46
+ puts "#{boss.points} grand total points"
47
+ puts "#{boss.health} total health"
48
+ 5.times {boss.w00t}
49
+ puts "#{boss.health} total health"
50
+ 2.times {boss.blam}
51
+ puts "#{boss.health} total health"
52
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ module StudioGame
5
+ Treasure = Struct.new(:name, :points)
6
+
7
+ module TreasureTrove
8
+ TREASURES = [
9
+ Treasure.new(:Gold, 200),
10
+ Treasure.new(:Silver, 150),
11
+ Treasure.new(:Bronze, 100),
12
+ Treasure.new(:Platinum, 1000)
13
+ ]
14
+ end
15
+ end
16
+
17
+ if __FILE__ == $0
18
+ items = TreasureTrove::TREASURES
19
+ puts "There are #{items.length} Treasure Items"
20
+ items.each do |item|
21
+ puts "#{item.name} is worth #{item.points} points."
22
+ end
23
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ require 'studio_game/boss_player'
3
+ require 'studio_game/player'
4
+
5
+ module StudioGame
6
+ describe BossPlayer do
7
+ before do
8
+ $stdout = StringIO.new
9
+ @boss = BossPlayer.new("Bowser")
10
+ end
11
+
12
+ it { expect(BossPlayer).to be < Player }
13
+
14
+ it "only gets half the point value for each treasure" do
15
+ expect(@boss.points).to eq(0)
16
+
17
+ lasergun = Treasure.new(:lasergun, 100)
18
+ @boss.found_treasure(lasergun)
19
+ @boss.found_treasure(lasergun)
20
+ @boss.found_treasure(lasergun)
21
+
22
+ expect(@boss.points).to eq(900)
23
+
24
+ cannon = Treasure.new(:cannon, 400)
25
+ @boss.found_treasure(cannon)
26
+
27
+ expect(@boss.points).to eq(2100)
28
+ yielded = []
29
+ @boss.each_found_treasure do |treasure|
30
+ yielded << treasure
31
+ end
32
+
33
+ expect(yielded).to eq([Treasure.new(:lasergun, 900), Treasure.new(:cannon, 1200)])
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ require 'studio_game/game'
2
+
3
+ module StudioGame
4
+ describe Game do
5
+ before do
6
+ @game = Game.new("Knuckleheads")
7
+ @initial_health = 100
8
+ @player = Player.new("moe", @initial_health)
9
+ @player2 = Player.new("nick", @initial_health)
10
+ @game.add_player(@player)
11
+ @game.add_player(@player2)
12
+ end
13
+
14
+ it "has a title" do
15
+ expect(@game.name).to eq("Knuckleheads")
16
+ end
17
+
18
+ it 'computes total points as the sum of all player points' do
19
+ game = Game.new("Knuckleheads")
20
+
21
+ player1 = Player.new("moe")
22
+ player2 = Player.new("larry")
23
+
24
+ game.add_player(player1)
25
+ game.add_player(player2)
26
+
27
+ player1.found_treasure(Treasure.new(:hammer, 50))
28
+ player1.found_treasure(Treasure.new(:hammer, 50))
29
+ player2.found_treasure(Treasure.new(:crowbar, 400))
30
+
31
+ expect(game.total_points).to eq(500)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'studio_game/player'
4
+ require 'studio_game/GameTurn'
5
+ require 'studio_game/treasure_trove'
6
+
7
+ module StudioGame
8
+ describe Player do
9
+ before do
10
+ # stdout is a global variable, when overwritten
11
+ # it's writes out to the new StringIO object
12
+ # and not the console
13
+ #$stdout = StringIO.new
14
+ @p1_health, @p2_health = 100, 100
15
+ @player = Player.new("nick", @p1_health)
16
+ @player2 = Player.new("jeff", @p2_health)
17
+ end
18
+
19
+ it 'has a captialized name' do
20
+ expect(@player.name).to eq("Nick")
21
+ end
22
+
23
+ it 'has an initial health' do
24
+ expect(@player.health).to eq(100)
25
+ end
26
+
27
+ it 'has a string representation' do
28
+ @player.found_treasure(Treasure.new(:lightning, 5))
29
+ expect(@player.to_s).to eq("I'm Nick with a health of 100 and a score of 105")
30
+ end
31
+
32
+ it 'computers 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(:warchest, 50000))
35
+ expect(@player.score).to eq(50150)
36
+ end
37
+ it 'increase health by 15 when w00ted' do
38
+ @player.w00t
39
+ expect(@player.health).to eq(115)
40
+ end
41
+
42
+ it 'decreases health by 10 when blammed' do
43
+ @player.blam
44
+ expect(@player.health).to eq(90)
45
+ end
46
+
47
+ it 'checks random damage by using special attack' do
48
+ allow_any_instance_of(Player).to receive(:random_score).and_return(50)
49
+ @player.use_special_attack(@player2)
50
+ expect(@player2.health).to eq(@p2_health - 50)
51
+ end
52
+
53
+ it 'computes points as the sum of all treasure points' do
54
+ expect(@player.points).to eq(0)
55
+ @player.found_treasure(Treasure.new(:hammer, 50))
56
+ expect(@player.points).to eq(50)
57
+ @player.found_treasure(Treasure.new(:bazooka, 1000))
58
+ expect(@player.points).to eq(1050)
59
+ @player.found_treasure(Treasure.new(:machine_learning, 5000))
60
+ expect(@player.points).to eq(6050)
61
+ end
62
+
63
+ it 'yields each found treasure and its total points' do
64
+ @player.found_treasure(Treasure.new(:skillet, 100))
65
+ @player.found_treasure(Treasure.new(:skillet, 100))
66
+ @player.found_treasure(Treasure.new(:hammer, 50))
67
+ @player.found_treasure(Treasure.new(:bottle, 5))
68
+ @player.found_treasure(Treasure.new(:bottle, 5))
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
+
73
+ yielded = []
74
+ @player.each_found_treasure do |treasure|
75
+ yielded << treasure
76
+ end
77
+
78
+ expect(yielded).to eq([
79
+ Treasure.new(:skillet, 200),
80
+ Treasure.new(:hammer, 50),
81
+ Treasure.new(:bottle, 25)
82
+ ])
83
+ end
84
+
85
+ context 'created with a default score' do
86
+ before do
87
+ @player = Player.new("nick", 100, 50)
88
+ end
89
+
90
+ it 'has a score of 50' do
91
+ expect(@player.score).to eq(100)
92
+ end
93
+ end
94
+
95
+ context 'created with a health of 150' do
96
+ before do
97
+ @player = Player.new("jeff", 150)
98
+ end
99
+
100
+ it 'is a strong player' do
101
+ expect(@player.strong?).to eq(true)
102
+ expect(@player.strong?).to_not eq(false)
103
+ end
104
+ end
105
+
106
+ context 'created with health of 75' do
107
+ before do
108
+ @player = Player.new("tim", 75)
109
+ end
110
+
111
+ it 'is a weak player' do
112
+ expect(@player.weak?).to eq(true)
113
+ expect(@player.weak?).to_not eq(false)
114
+ end
115
+ end
116
+
117
+ context 'multiple players' do
118
+ before do
119
+ @player1 = Player.new("nick", 100)
120
+ @player2 = Player.new("jeff", 200)
121
+ @player3 = Player.new("matt", 300)
122
+ @players = [@player1, @player2, @player3]
123
+ end
124
+
125
+ it 'names should be sorted by decreasing score' do
126
+ expect(@players.sort).to eq([@player3, @player2, @player1])
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+ require 'studio_game/super_boss_player'
3
+ require 'studio_game/player'
4
+
5
+
6
+ module StudioGame
7
+ describe SuperBossPlayer do
8
+ before do
9
+ $stdout = StringIO.new
10
+ @superboss = SuperBossPlayer.new("Bowser")
11
+ end
12
+
13
+ it { expect(SuperBossPlayer).to be < Player }
14
+ it { expect(SuperBossPlayer).to be < Player}
15
+
16
+ it "only gets half the point value for each treasure" do
17
+ expect(@superboss.points).to eq(0)
18
+
19
+ lasergun = Treasure.new(:lasergun, 10)
20
+ @superboss.found_treasure(lasergun)
21
+ @superboss.found_treasure(lasergun)
22
+ @superboss.found_treasure(lasergun)
23
+
24
+ expect(@superboss.points).to eq(30000)
25
+
26
+ cannon = Treasure.new(:cannon, 100)
27
+ @superboss.found_treasure(cannon)
28
+
29
+ expect(@superboss.points).to eq(130000)
30
+ yielded = []
31
+ @superboss.each_found_treasure do |treasure|
32
+ yielded << treasure
33
+ end
34
+
35
+ expect(yielded).to eq([Treasure.new(:lasergun, 30000), Treasure.new(:cannon, 100000)])
36
+ end
37
+
38
+ it 'should w00t if blammed in berserk mode' do
39
+ 6.times {@superboss.w00t}
40
+ expect(@superboss.health).to eq(190)
41
+ 2.times {@superboss.blam}
42
+ expect(@superboss.health).to eq(220)
43
+ end
44
+
45
+ it 'superboss should go berserk after 5 w00ts' do
46
+ expect(@superboss.berserk?).to eq(false)
47
+ 5.times{@superboss.w00t}
48
+ expect(@superboss.berserk?).to eq(true)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,43 @@
1
+ require 'studio_game/treasure_trove'
2
+
3
+ module StudioGame
4
+ describe Treasure do
5
+ before do
6
+ @treasure = Treasure.new(:hammer, 50)
7
+ end
8
+
9
+ it 'has a name attribute' do
10
+ expect(@treasure.name).to eq(:hammer)
11
+ end
12
+
13
+ it 'has a points attribute' do
14
+ expect(@treasure.points).to eq(50)
15
+ end
16
+ end
17
+
18
+ describe TreasureTrove do
19
+ before do
20
+ @treasures = TreasureTrove::TREASURES
21
+ end
22
+
23
+ it 'has a trove of 4' do
24
+ expect(@treasures.length).to eq(4)
25
+ end
26
+ it 'has gold worth 200' do
27
+ expect(@treasures[0].name).to eq(:Gold)
28
+ expect(@treasures[0].points).to eq(200)
29
+ end
30
+ it 'has silver worth 150' do
31
+ expect(@treasures[1].name).to eq(:Silver)
32
+ expect(@treasures[1].points).to eq(150)
33
+ end
34
+ it 'has bronze worth 100' do
35
+ expect(@treasures[2].name).to eq(:Bronze)
36
+ expect(@treasures[2].points).to eq(100)
37
+ end
38
+ it 'has platinum worth 1000' do
39
+ expect(@treasures[3].name).to eq(:Platinum)
40
+ expect(@treasures[3].points).to eq(1000)
41
+ end
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Nicks_Studio_Game
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Nickolas Teixeira
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-01 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: '2.8'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.8.0
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.8'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.8.0
33
+ description: ''
34
+ email: NickolasTeixeira01@gmail.com
35
+ executables:
36
+ - studio_game
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - LICENSE
41
+ - README.md
42
+ - bin/boss_characters.csv
43
+ - bin/players.csv
44
+ - bin/studio_game
45
+ - lib/studio_game/GameTurn.rb
46
+ - lib/studio_game/boss_player.rb
47
+ - lib/studio_game/game.rb
48
+ - lib/studio_game/playable.rb
49
+ - lib/studio_game/player.rb
50
+ - lib/studio_game/super_boss_player.rb
51
+ - lib/studio_game/treasure_trove.rb
52
+ - spec/studio_game/boss_player_spec.rb
53
+ - spec/studio_game/game_spec.rb
54
+ - spec/studio_game/player_spec.rb
55
+ - spec/studio_game/super_boss_player_spec.rb
56
+ - spec/studio_game/treasure_trove_spec.rb
57
+ homepage: https://NickolasTeixeira.com
58
+ licenses:
59
+ - MIT
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '2.5'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 2.7.6
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: Nick's Simple Studio Game
81
+ test_files:
82
+ - spec/studio_game/treasure_trove_spec.rb
83
+ - spec/studio_game/player_spec.rb
84
+ - spec/studio_game/boss_player_spec.rb
85
+ - spec/studio_game/super_boss_player_spec.rb
86
+ - spec/studio_game/game_spec.rb