studio_game_a 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0f6fc564e5535f5edee4785ba742eb85c03ff3a4
4
+ data.tar.gz: 01108f285af8501b4f2824e82cbcc58819e2e5c0
5
+ SHA512:
6
+ metadata.gz: 7dfc75de50668c4ef579b215c50ad961586222aca956d0c70a14210d4d159539860df0d0be4aeac096570611fc336822bb5898fb0d5c792233c889ebce9500df
7
+ data.tar.gz: c00115bde1b2aa04131d057f24c2d9777bb1d6ffbb978424f4cf1cf42c7fc3d94917a20bb63e3004e058ec505a4efb1669a30c648734f1b274dcd426eb44cead
data/LICENSE ADDED
@@ -0,0 +1 @@
1
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
File without changes
@@ -0,0 +1,9 @@
1
+
2
+ Sonic High Scores
3
+ Squall......... 139740
4
+ Tidus.......... 134144
5
+ Zidane......... 116905
6
+ Tcg cid........ 109145
7
+ Lightning...... 100280
8
+ Cloud.......... 98015
9
+ Klutz.......... 24890
data/bin/players.csv ADDED
@@ -0,0 +1,5 @@
1
+ cloud, 100
2
+ squall, 80
3
+ zidane, 70
4
+ tidus, 69
5
+ lightning, 85
data/bin/studio_game ADDED
@@ -0,0 +1,45 @@
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
+ # player1 = Player.new("alfian")
8
+ # player2 = Player.new("johan")
9
+ # player3 = Player.new("harry")
10
+ # player4 = Player.new("paul")
11
+
12
+ clumsy = StudioGame::ClumsyPlayer.new("Klutz", 105)
13
+ berserk = StudioGame::BerserkPlayer.new("TCG Cid", 50)
14
+
15
+
16
+ game = StudioGame::Game.new("Sonic")
17
+ default_load_path = File.join(File.dirname(__FILE__), 'players.csv')
18
+
19
+
20
+ game.load_players(ARGV.shift || default_load_path)
21
+ game.add_player(clumsy)
22
+ game.add_player(berserk)
23
+
24
+ loop do
25
+ puts'How many games round? ("quit" to exit)'
26
+ input = gets.chomp
27
+ case input
28
+ when /^\d+$/
29
+ game.play(input.to_i)
30
+ game.print_stats
31
+ when 'quit', 'exit'
32
+ break
33
+ else
34
+ puts "Please enter a number or quit"
35
+ end
36
+ end
37
+
38
+ game.save_high_scores('high_scores.txt')
39
+
40
+
41
+
42
+ # game.play(5) do
43
+ # game.total_points > 50000
44
+ # end
45
+ # game.print_stats
@@ -0,0 +1,11 @@
1
+ module StudioGame
2
+
3
+ module Auditable
4
+
5
+ def audit
6
+ puts "Rolled a #{self.number} (#{self.class})"
7
+ end
8
+
9
+ end
10
+
11
+ end
@@ -0,0 +1,44 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+
5
+ class BerserkPlayer < Player
6
+
7
+ def initialize(name, health)
8
+ super(name, health)
9
+ @w00t_count = 0
10
+ end
11
+
12
+ def berserk?
13
+ @w00t_count > 5 ? true : false
14
+ end
15
+
16
+ def w00t
17
+ super
18
+ @w00t_count += 1
19
+ puts "Berserker is berserk" if berserk?
20
+ end
21
+
22
+ def blam
23
+ berserk? ? w00t : super
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+
31
+ if __FILE__ == $0
32
+ berserk = StudioGame::BerserkPlayer.new("berserker", 100)
33
+ 6.times do
34
+ berserk.w00t
35
+ end
36
+
37
+ 2.times do
38
+ berserk.blam
39
+ end
40
+
41
+ puts berserk.health
42
+
43
+ end
44
+
@@ -0,0 +1,44 @@
1
+ require_relative 'player'
2
+
3
+ module StudioGame
4
+
5
+ class ClumsyPlayer < Player
6
+ attr_reader :boost_factor
7
+
8
+ def initialize(name, health, boost_factor=1)
9
+ super(name, health)
10
+ @boost_factor = boost_factor
11
+ end
12
+
13
+ def w00t
14
+ @boost_factor.times { super }
15
+ end
16
+
17
+ def found_treasure(treasure)
18
+ super(Treasure.new(treasure.name, treasure.point / 2))
19
+ end
20
+ end
21
+
22
+ end
23
+
24
+
25
+ if __FILE__ == $0
26
+
27
+
28
+ # clumsy = ClumsyPlayer.new("johan", 100)
29
+ # hammer = Treasure.new(:hammer, 50)
30
+ # clumsy.found_treasure(hammer)
31
+ # clumsy.found_treasure(hammer)
32
+ # clumsy.found_treasure(hammer)
33
+
34
+ # crowbar = Treasure.new(:crowbar, 200)
35
+ # clumsy.found_treasure(crowbar)
36
+ # clumsy.found_treasure(crowbar)
37
+
38
+ # clumsy.each_found_treasure do |treasure|
39
+ # puts "#{treasure.point} total #{treasure.name} points"
40
+ # end
41
+
42
+ # puts "Total grand points #{clumsy.points}"
43
+
44
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'auditable'
2
+
3
+ module StudioGame
4
+
5
+ class Die
6
+ include Auditable
7
+ attr_accessor :number
8
+
9
+ def roll
10
+ @number = rand 1..6
11
+ audit
12
+ @number
13
+ end
14
+ end
15
+
16
+ end
17
+
18
+
@@ -0,0 +1,122 @@
1
+ require_relative 'player'
2
+ require_relative 'game_turn'
3
+ require 'csv'
4
+
5
+ module StudioGame
6
+ class Game
7
+ attr_accessor :name
8
+
9
+ def initialize(name)
10
+ @name = name.capitalize
11
+ @players = []
12
+ end
13
+
14
+ def add_player(player)
15
+ @players << player
16
+ end
17
+
18
+ def high_score_entry(player)
19
+ "#{player.name.ljust(15, '.')} #{player.score}"
20
+ end
21
+
22
+ def load_players(file_to_load)
23
+ CSV.foreach(file_to_load) do |row|
24
+ player = Player.new(row[0], Integer(row[1]))
25
+ add_player(player)
26
+ end
27
+ end
28
+
29
+ def save_high_scores(file_to_save)
30
+ File.open(file_to_save, "w") do |file|
31
+ file.puts "\n#{@name} High Scores"
32
+ sorted_players = @players.sort
33
+
34
+ sorted_players.each do |player|
35
+ file.puts high_score_entry(player)
36
+ end
37
+ end
38
+ end
39
+
40
+ def play(rounds_number)
41
+ puts "The game #{@name} has been started with #{@players.length} players"
42
+ treasures = TreasureTrove::TREASURES
43
+ puts "There are #{treasures.length} treasures"
44
+
45
+ treasures.each do |treasure|
46
+ puts "a #{treasure.name} worth #{treasure.point} points"
47
+ end
48
+
49
+
50
+ 1.upto(rounds_number) do |number|
51
+ puts "\nRound #{number} Started"
52
+ @players.each do |player|
53
+ GameTurn.take_turn(player)
54
+ end
55
+ if block_given?
56
+ break if yield
57
+ end
58
+ puts @players
59
+ end
60
+ end
61
+
62
+ def print_name_and_health(player)
63
+ puts "#{player.name} (#{player.health})"
64
+ end
65
+
66
+ def total_points
67
+ points = 0
68
+ @players.each do |player|
69
+ points += player.points
70
+ end
71
+ points
72
+ end
73
+
74
+ def print_stats
75
+ puts "\n#{@name} statistics"
76
+
77
+ puts "\nTotal treasures points found in the game"
78
+ puts "#{total_points} total points"
79
+
80
+ puts "\nTotal each player grand points"
81
+ @players.each do |player|
82
+ puts "\n#{player.name} #{player.points} total points"
83
+ player.each_found_treasure do |treasure|
84
+ puts "#{treasure.name} with the total of #{treasure.point}"
85
+
86
+ end
87
+ end
88
+
89
+ strong, wimpy = @players.partition do |player|
90
+ player.strong?
91
+ end
92
+
93
+ puts "\n#{strong.length} strong players"
94
+ strong.each do |player|
95
+ print_name_and_health(player)
96
+ end
97
+
98
+ puts "\n#{wimpy.length} wimpy players"
99
+ wimpy.each do |player|
100
+ print_name_and_health(player)
101
+ end
102
+
103
+ puts "\n#{@name} High Scores"
104
+ sorted_players = @players.sort
105
+
106
+ sorted_players.each do |player|
107
+ puts high_score_entry(player)
108
+ end
109
+ end
110
+ end
111
+ end
112
+
113
+
114
+ if __FILE__ == $0
115
+ player = StudioGame::Player.new("johan")
116
+ game = StudioGame::Game.new("sonic")
117
+ game.add_player(player)
118
+ game.play(1)
119
+ puts player.score
120
+
121
+
122
+ end
@@ -0,0 +1,31 @@
1
+ require_relative 'die'
2
+ require_relative 'player'
3
+ require_relative 'treasure_trove'
4
+ require_relative 'loaded_die'
5
+
6
+ module StudioGame
7
+
8
+ module GameTurn
9
+
10
+ def self.take_turn(player)
11
+ treasure = TreasureTrove.random
12
+ player.found_treasure(treasure)
13
+
14
+ die = Die.new
15
+ number_rolled = die.roll
16
+ case number_rolled
17
+ when 1..2
18
+ player.blam
19
+ puts player
20
+ when 3..4
21
+ puts "#{player} was skipped"
22
+ else
23
+ player.w00t
24
+ puts player
25
+ end
26
+ end
27
+
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'auditable'
2
+
3
+ module StudioGame
4
+ class LoadedDie
5
+ include Auditable
6
+ attr_accessor :number
7
+
8
+ def roll
9
+ numbers = [1, 1, 2, 5, 6]
10
+ @number = numbers.sample
11
+ audit
12
+ @number
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,21 @@
1
+
2
+ module StudioGame
3
+
4
+ module Playable
5
+
6
+ def strong?
7
+ self.health > 100 ? true : false
8
+ end
9
+
10
+ def w00t
11
+ self.health += 15
12
+ puts "#{self.name} got w00ted"
13
+ end
14
+
15
+ def blam
16
+ self.health -= 10
17
+ puts "#{self.name} got blammed"
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,64 @@
1
+ require_relative 'treasure_trove'
2
+ require_relative 'playable'
3
+
4
+ module StudioGame
5
+ class Player
6
+ include Playable
7
+ attr_accessor :name, :health
8
+
9
+ def <=>(other_player)
10
+ other_player.score <=> score
11
+ end
12
+
13
+ def initialize(name, health=100)
14
+ @name = name.capitalize
15
+ @health = health
16
+ @found_treasures = Hash.new(0)
17
+ end
18
+
19
+ def self.from_csv(line)
20
+ name, health = line.split(',')
21
+ Player.new(name, Integer(health))
22
+ end
23
+
24
+ def found_treasure(treasure)
25
+ @found_treasures[treasure.name] += treasure.point
26
+ puts "#{@name} found #{treasure.name} worth #{treasure.point} points"
27
+ puts "Found Treasures : #{@found_treasures}"
28
+ end
29
+
30
+ def each_found_treasure
31
+ @found_treasures.each do |name, points|
32
+ treasure = Treasure.new(name, points)
33
+ yield treasure
34
+ end
35
+ end
36
+
37
+ def points
38
+ @found_treasures.values.reduce(:+)
39
+ end
40
+
41
+ def to_s
42
+ "I am #{@name} with health: #{@health}, points: #{points} and score: #{score}"
43
+ end
44
+
45
+ def score
46
+ @health + points
47
+ end
48
+
49
+ end
50
+ end
51
+
52
+ if __FILE__ == $0
53
+ player = StudioGame::Player.new("alfian", 100)
54
+ player.w00t
55
+ player.blam
56
+ player.found_treasure(Treasure.new(:excalibur, 100))
57
+ player.found_treasure(Treasure.new(:excalibur, 100))
58
+ puts player
59
+ puts player.points
60
+
61
+
62
+ end
63
+
64
+
@@ -0,0 +1,5 @@
1
+ cloud, 100
2
+ snake, 98
3
+ mario, 75
4
+ megaman, 84
5
+ chris, 90
@@ -0,0 +1,21 @@
1
+
2
+ module StudioGame
3
+
4
+ Treasure = Struct.new(:name, :point)
5
+ module TreasureTrove
6
+
7
+ TREASURES = [
8
+ Treasure.new(:Excalibur, 1000),
9
+ Treasure.new(:Ragnarok, 900),
10
+ Treasure.new(:Omniblade, 5000),
11
+ Treasure.new(:Zeldricht, 500),
12
+ Treasure.new(:Xenoblade, 10000),
13
+ Treasure.new(:Falkhir, 800)
14
+ ]
15
+
16
+ def self.random
17
+ TREASURES.sample
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,46 @@
1
+ require 'studio_game/berserk_player'
2
+
3
+ module StudioGame
4
+ describe BerserkPlayer do
5
+ before do
6
+ $stdout = StringIO.new
7
+ @player = StudioGame::BerserkPlayer.new("TCG Cid", 100)
8
+ end
9
+
10
+ it "does not get berserk when w00ted for 5 times" do
11
+ 5.times do
12
+ @player.w00t
13
+ end
14
+
15
+ expect(@player).not_to be_berserk
16
+ end
17
+
18
+ it "get berserk after w00ted more than 5 times" do
19
+ 6.times do
20
+ @player.w00t
21
+ end
22
+
23
+ expect(@player).to be_berserk
24
+
25
+ end
26
+
27
+
28
+
29
+ it "get into berserk mode after being w00ted more than 5 times, whenever you blammed it, it will be wooted instead" do
30
+ 6.times do
31
+ @player.w00t
32
+ end
33
+
34
+ expect(@player).to be_berserk
35
+
36
+ 2.times do
37
+ @player.blam
38
+ end
39
+
40
+ expect(@player.health).to eq(220)
41
+
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,45 @@
1
+ require 'studio_game/clumsy_player'
2
+
3
+ module StudioGame
4
+ describe ClumsyPlayer do
5
+ before do
6
+ $stdout = StringIO.new
7
+ @boost_factor = 2
8
+ @player = ClumsyPlayer.new("Johan", 100, @boost_factor)
9
+ end
10
+
11
+ it "has a boost factor" do
12
+ expect(@player.boost_factor).to eq(2)
13
+ end
14
+
15
+ it "gets boost factor number of w00ts when wooted" do
16
+ @player.w00t
17
+ expect(@player.health).to eq(100 + 15 * @boost_factor)
18
+ end
19
+
20
+ it "half the point of the treasure found by the clumsy player" do
21
+ hammer = Treasure.new(:hammer, 50)
22
+ @player.found_treasure(hammer)
23
+ @player.found_treasure(hammer)
24
+ @player.found_treasure(hammer)
25
+
26
+ expect(@player.points).to eq(75)
27
+
28
+ sword = Treasure.new(:sword, 200)
29
+ @player.found_treasure(sword)
30
+ @player.found_treasure(sword)
31
+
32
+ expect(@player.points).to eq(275)
33
+
34
+ yielded = []
35
+
36
+ @player.each_found_treasure do |treasure|
37
+ yielded << treasure
38
+ end
39
+
40
+ expect(yielded).to eq([Treasure.new(:hammer, 75), Treasure.new(:sword, 200)])
41
+
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,75 @@
1
+ require 'studio_game/game'
2
+ require 'studio_game/treasure_trove'
3
+
4
+ module StudioGame
5
+ describe Game do
6
+ before do
7
+ $stdout = StringIO.new
8
+ @game = Game.new("sonic")
9
+ @initial_health = 100
10
+ @player = Player.new("alfian", @initial_health)
11
+ @game.add_player(@player)
12
+ @rounds_number = 3
13
+ end
14
+
15
+ it "compute total points as the sum of all player points" do
16
+ game = Game.new("alfian")
17
+ player1 = Player.new("johan", 42)
18
+ player2 = Player.new("andy", 50)
19
+
20
+ game.add_player(player1)
21
+ game.add_player(player2)
22
+
23
+ player1.found_treasure(Treasure.new(:excalibur, 200))
24
+ player2.found_treasure(Treasure.new(:ragnarok, 100))
25
+
26
+ expect(game.total_points).to eql(300)
27
+
28
+ end
29
+
30
+
31
+ it "assign a treasure everytime a player get a turn" do
32
+ player = Player.new("alfian")
33
+ game = Game.new("knuckles")
34
+ game.add_player(player)
35
+ game.play(1)
36
+ expect(player.points).not_to be_zero
37
+ end
38
+
39
+ it "should w00t the player if high number is rolled" do
40
+ allow_any_instance_of(Die).to receive(:roll).and_return(5)
41
+ @game.play(@rounds_number)
42
+ expect(@player.health).to eq(@initial_health + 15 * @rounds_number)
43
+ end
44
+
45
+ it "skips the player if a medium number is rolled" do
46
+ allow_any_instance_of(Die).to receive(:roll).and_return(3)
47
+ @game.play(@rounds_number)
48
+ expect(@player.health).to eq(@initial_health)
49
+ end
50
+
51
+ it "should blam the player if low number is rolled" do
52
+ allow_any_instance_of(Die).to receive(:roll).and_return(1)
53
+ @game.play(@rounds_number)
54
+ expect(@player.health).to eq(@initial_health - 10 * @rounds_number)
55
+ end
56
+
57
+ context "A collection of players" do
58
+ before do
59
+ @player1 = Player.new("Alfian", 100)
60
+ @player2 = Player.new("Johan", 200)
61
+ @player3 = Player.new("Harry", 300)
62
+ hammer = Treasure.new(:hammer, 50)
63
+ @player1.found_treasure(hammer)
64
+ @player2.found_treasure(hammer)
65
+ @player3.found_treasure(hammer)
66
+
67
+ @players = [@player1, @player2, @player3]
68
+ end
69
+
70
+ it "sort the player in descending order based on the score" do
71
+ expect(@players.sort).to eq([@player3, @player2, @player1])
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,106 @@
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
+ @initial_health = 150
10
+ @player = Player.new("alfian", @initial_health)
11
+ end
12
+
13
+ it "can be created from CSV string" do
14
+ player = Player.from_csv("Johan,150")
15
+ expect(player.name).to eql("Johan")
16
+ expect(player.health).to eql(150)
17
+ end
18
+
19
+
20
+ it "yield each found treasure and its total points" do
21
+ @player.found_treasure(Treasure.new(:excalibur, 200))
22
+ @player.found_treasure(Treasure.new(:excalibur, 500))
23
+ @player.found_treasure(Treasure.new(:ragnarok, 50))
24
+ @player.found_treasure(Treasure.new(:ragnarok, 200))
25
+ @player.found_treasure(Treasure.new(:einhander, 40))
26
+ @player.found_treasure(Treasure.new(:einhander, 60))
27
+
28
+ yielded = []
29
+
30
+ @player.each_found_treasure do |treasure|
31
+ yielded << treasure
32
+ end
33
+
34
+ expect(yielded).to eq([
35
+ Treasure.new(:excalibur, 700),
36
+ Treasure.new(:ragnarok, 250),
37
+ Treasure.new(:einhander, 100)
38
+ ])
39
+ end
40
+
41
+ it "computes points as sum of all treasure point" do
42
+ @player.found_treasure(Treasure.new(:excalibur, 500))
43
+ expect(@player.points).to eq(500)
44
+ @player.found_treasure(Treasure.new(:einhander, 1000))
45
+ expect(@player.points).to eq(1500)
46
+ @player.found_treasure(Treasure.new(:ragnarok, 2000))
47
+ expect(@player.points).to eq(3500)
48
+ end
49
+
50
+ it "computes the score as the sum of player's health and player's points" do
51
+ @player.found_treasure(Treasure.new(:excalibur, 1000))
52
+ @player.found_treasure(Treasure.new(:ragnarok, 2000))
53
+ expect(@player.score).to eq(3150)
54
+ end
55
+
56
+ it "Should have a capitalized name" do
57
+ expect(@player.name).to eql("Alfian")
58
+ end
59
+
60
+ it "Has an initial health" do
61
+ expect(@player.health).to eql(@initial_health)
62
+ end
63
+
64
+ it "has a string representation" do
65
+ @player.found_treasure(Treasure.new(:excalibur, 1000))
66
+
67
+ expect(@player.to_s).to eq("I am #{@player.name} with health: #{@player.health}, points: #{@player.points} and score: #{@player.score}")
68
+ end
69
+
70
+ it "Computes a score as the sum of health and player points" do
71
+ @player.found_treasure(Treasure.new(:excalibur, 1000))
72
+ expect(@player.score).to eq(@player.health + @player.points)
73
+ end
74
+
75
+ it "Increases health by 15 when w00ted" do
76
+ @player.w00t
77
+ expect(@player.health).to eq(@initial_health + 15)
78
+ end
79
+
80
+ it "Decreases health by 10 when blammed" do
81
+ @player.blam
82
+ expect(@player.health).to eq(@initial_health - 10)
83
+ end
84
+
85
+ context "Create a player with strong parameter" do
86
+ before do
87
+ @player = Player.new("alfian", 150)
88
+ end
89
+
90
+ it "is a strong player" do
91
+ expect(@player).to be_strong
92
+ end
93
+ end
94
+
95
+ context "Create a player with wimpy parameter" do
96
+ before do
97
+ @player = Player.new("alfian", 100)
98
+ end
99
+
100
+ it "is not a strong player" do
101
+ expect(@player).not_to be_strong
102
+ end
103
+ end
104
+
105
+ end
106
+ end
@@ -0,0 +1,58 @@
1
+ require 'studio_game/treasure_trove'
2
+
3
+ module StudioGame
4
+
5
+ describe Treasure do
6
+ before do
7
+ @initial_name = "Excalibur"
8
+ @initial_point = 1000
9
+ @treasure = Treasure.new(@initial_name, @initial_point)
10
+ end
11
+
12
+ it "has a name attribute" do
13
+ expect(@treasure.name).to eq(@initial_name)
14
+ end
15
+
16
+ it "has a point attribute" do
17
+ expect(@treasure.point).to eq(@initial_point)
18
+ end
19
+ end
20
+
21
+ describe TreasureTrove do
22
+
23
+ it "TreasureTrove has a constant treasures with the size of 6" do
24
+ expect(TreasureTrove::TREASURES.size).to eq(6)
25
+ end
26
+
27
+ it "excalibur inside treasures worth 1000 points" do
28
+ expect(TreasureTrove::TREASURES[0].point).to eq(1000)
29
+ end
30
+
31
+ it "ragnarok inside treasure worth 900 points" do
32
+ expect(TreasureTrove::TREASURES[1].point).to eq(900)
33
+ end
34
+
35
+ it "omniblade inside treasure worth 5000 points" do
36
+ expect(TreasureTrove::TREASURES[2].point).to eq(5000)
37
+ end
38
+
39
+ it "zeldricht inside treasure worth 500 points" do
40
+ expect(TreasureTrove::TREASURES[3].point).to eq(500)
41
+ end
42
+
43
+ it "xenoblade inside treasure worh 10000 points" do
44
+ expect(TreasureTrove::TREASURES[4].point).to eq(10000)
45
+ end
46
+
47
+ it "falkhir inside treasure worth 800 points" do
48
+ expect(TreasureTrove::TREASURES[5].point).to eq(800)
49
+ end
50
+
51
+ it "successfuly gives a random treasure inside the treasures" do
52
+ treasure = TreasureTrove.random
53
+ expect(TreasureTrove::TREASURES).to include(treasure)
54
+ end
55
+
56
+
57
+ end
58
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: studio_game_a
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - alfian losari
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-15 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: alfian@losari.org
29
+ executables:
30
+ - studio_game
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - LICENSE
35
+ - README
36
+ - bin/high_scores.txt
37
+ - bin/players.csv
38
+ - bin/studio_game
39
+ - lib/studio_game/auditable.rb
40
+ - lib/studio_game/berserk_player.rb
41
+ - lib/studio_game/clumsy_player.rb
42
+ - lib/studio_game/die.rb
43
+ - lib/studio_game/game.rb
44
+ - lib/studio_game/game_turn.rb
45
+ - lib/studio_game/loaded_die.rb
46
+ - lib/studio_game/playable.rb
47
+ - lib/studio_game/player.rb
48
+ - lib/studio_game/player_choices.rb
49
+ - lib/studio_game/treasure_trove.rb
50
+ - spec/studio_game/berserk_player_spec.rb
51
+ - spec/studio_game/clumsy_player_spec.rb
52
+ - spec/studio_game/game_spec.rb
53
+ - spec/studio_game/player_spec.rb
54
+ - spec/studio_game/treasure_trove_spec.rb
55
+ homepage: http://www.thebytestech.com
56
+ licenses:
57
+ - MIT
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '1.9'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.2.2
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: Studio Game
79
+ test_files:
80
+ - spec/studio_game/berserk_player_spec.rb
81
+ - spec/studio_game/clumsy_player_spec.rb
82
+ - spec/studio_game/game_spec.rb
83
+ - spec/studio_game/player_spec.rb
84
+ - spec/studio_game/treasure_trove_spec.rb