studio_game_raf 1.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
+ SHA256:
3
+ metadata.gz: '0967fcb6a49e47d9de0912febac0d62ad07f06cb1eff34f975b3a6e86ed9a74c'
4
+ data.tar.gz: e564b61d81385630ef1b83bfb4e602206dbac9646fe44770fd99b5e764a30d86
5
+ SHA512:
6
+ metadata.gz: 60040eae4cd271f258923f331f822d2a55eec601ad71f418e6248892bc3a4d0afe49b63ecbf01171101f6b325f1fd9d428b679a1340f0e052a89b774d10e3233
7
+ data.tar.gz: 98cb936a5c703205ae6543fa8032e779e942ca777045e65bf6b54ca93cb66309f80a2b16bb0c34ecfbe4931aa47ecfc913bb2382ba8393092914f3d8f4399e5f
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2021 Yassine Rafa
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
data/README ADDED
@@ -0,0 +1 @@
1
+ A game coded in Ruby following the Pragramtic Studio Ruby course
@@ -0,0 +1,11 @@
1
+ Knuckleheads High scores :
2
+
3
+ Hamid............... 560
4
+
5
+ Berserker........... 440.0
6
+
7
+ Klutz............... 392.5
8
+
9
+ Alvin............... 385
10
+
11
+ Simo................ 375
@@ -0,0 +1,3 @@
1
+ Alvin,100
2
+ Hamid,60
3
+ Simo,125
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../lib/studio_game/game'
3
+ require_relative '../lib/studio_game/clumsy_player'
4
+ require_relative '../lib/studio_game/berserk_player'
5
+ knuckleheads = StudioGame::Game.new("Knuckleheads")
6
+ default_player_file = File.join(File.dirname(__FILE__), 'players.csv')
7
+ knuckleheads.load_players(ARGV.shift || default_player_file)
8
+ clumsy = StudioGame::ClumsyPlayer.new("klutz",105)
9
+ knuckleheads.add_player(clumsy)
10
+ berserk = StudioGame::BerserkPlayer.new("berserker",105)
11
+ knuckleheads.add_player(berserk)
12
+ loop do
13
+ puts "\nHow many rounds? ('quit' to exit)"
14
+ answer = gets.chomp.downcase
15
+ case answer
16
+ when /^\d+$/
17
+ knuckleheads.play(answer.to_i)
18
+ when "quit", "exit"
19
+ knuckleheads.print_stats
20
+ break
21
+ else
22
+ puts "Please enter a number or 'quit'"
23
+ end
24
+ end
25
+ #knuckleheads.save_high_scores
@@ -0,0 +1,7 @@
1
+ module StudioGame
2
+ module Auditable
3
+ def audit
4
+ puts "Rolled a #{self.number} (#{self.class})"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,35 @@
1
+ require_relative 'player'
2
+ module StudioGame
3
+
4
+ class BerserkPlayer < Player
5
+ def initialize(name ="John Berserk", health=100)
6
+ super(name,health)
7
+ @w00t_count = 0
8
+ end
9
+
10
+ def berserk?
11
+ @w00t_count > 5
12
+ end
13
+
14
+ def w00t
15
+ super
16
+ @w00t_count += 1
17
+ puts "#{@name} is berserk" if berserk?
18
+ end
19
+
20
+ def blam
21
+ if berserk?
22
+ w00t
23
+ else
24
+ super
25
+ end
26
+ end
27
+
28
+ end
29
+ if __FILE__ == $0
30
+ berserker = BerserkPlayer.new("berserker", 50)
31
+ 6.times { berserker.w00t }
32
+ 2.times { berserker.blam }
33
+ puts berserker.health
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ require_relative 'player'
2
+ module StudioGame
3
+ class ClumsyPlayer < Player
4
+ attr_reader :boost_factor
5
+ def initialize (name, health = 100, boost=1)
6
+ super(name, health)
7
+ @boost = boost
8
+ end
9
+ def found_treasure(treasure)
10
+ damaged_treasure = Treasure.new(treasure.name, treasure.points / 2.0)
11
+ super(damaged_treasure)
12
+ end
13
+ def w00t
14
+ @boost.times { super }
15
+ end
16
+
17
+ end
18
+ end
19
+
20
+
21
+ if __FILE__ == $0
22
+ clumsy = ClumsyPlayer.new("klutz")
23
+
24
+ hammer = Treasure.new(:hammer, 50)
25
+ clumsy.found_treasure(hammer)
26
+ clumsy.found_treasure(hammer)
27
+ clumsy.found_treasure(hammer)
28
+
29
+ crowbar = Treasure.new(:crowbar, 400)
30
+ clumsy.found_treasure(crowbar)
31
+
32
+ clumsy.each_found_treasure do |treasure|
33
+ puts "#{treasure.points} total #{treasure.name} points"
34
+ end
35
+ puts "#{clumsy.points} grand total points"
36
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'auditable'
2
+ module StudioGame
3
+ class Die
4
+ include Auditable
5
+ attr_reader :number
6
+ def initialize
7
+ roll
8
+ end
9
+ def roll
10
+ @number = rand(1..6)
11
+ audit
12
+ @number
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,87 @@
1
+ require_relative 'game_turn'
2
+ module StudioGame
3
+ class Game
4
+
5
+ def initialize (title)
6
+ @title = title
7
+ @players = []
8
+ end
9
+ def high_score_entry(player)
10
+ "\n#{player.name.ljust(20,".")} #{player.score}"
11
+ end
12
+ def load_players(from_file)
13
+ File.readlines(from_file).each do |line|
14
+ add_player(Player.from_csv(line))
15
+ end
16
+ end
17
+ def save_high_scores(to_file="high_scores.txt")
18
+ File.open(to_file, "w") do |file|
19
+ file.puts "#{@title} High scores :"
20
+ @players.sort.each do |player|
21
+ file.puts high_score_entry(player)
22
+ end
23
+ end
24
+ end
25
+ def add_player(player)
26
+ @players << player
27
+ end
28
+ def print_name_and_health(player)
29
+ puts "#{player.name} (#{player.health})"
30
+ end
31
+
32
+ def total_points
33
+ @players.reduce(0) {|sum, player| sum + player.points}
34
+ end
35
+
36
+ def print_stats
37
+ strong_players, wimpy_players = @players.partition { |player| player.strong? }
38
+ puts "\n#{@title} Statistics"
39
+ puts "\n#{strong_players.count} strong players:"
40
+ strong_players.each do |player|
41
+ print_name_and_health(player)
42
+ end
43
+ puts "\n#{wimpy_players.count} wimpy players:"
44
+ wimpy_players.each do |player|
45
+ print_name_and_health(player)
46
+ end
47
+ @players.each do |player|
48
+ puts "\n#{player.name}'s point totals:"
49
+ player.each_found_treasure do |treasure|
50
+ puts "#{treasure.points} total #{treasure.name} points"
51
+ end
52
+ puts "#{player.points} grand total points"
53
+ end
54
+ @players.sort.each do |player|
55
+ puts high_score_entry(player)
56
+ end
57
+ puts "#{total_points} points from treasures found"
58
+ end
59
+
60
+ def play(rounds)
61
+ 1.upto(rounds) do |round|
62
+ if block_given?
63
+ break if yield
64
+ else
65
+ puts "\nRound #{round}"
66
+ puts "There are #{@players.size} players in the game :"
67
+ @players.each do|player|
68
+ puts player
69
+ end
70
+ treasures = TreasureTrove::TREASURES
71
+ puts "\nThere are #{treasures.size} treasures to be found :"
72
+ treasures.each do |treasure|
73
+ puts "A #{treasure.name} is worth #{treasure.points} points"
74
+ end
75
+ @players.each do |player|
76
+ GameTurn.take_turn(player)
77
+ puts player
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ end
84
+
85
+
86
+ end
87
+
@@ -0,0 +1,24 @@
1
+ require_relative 'player'
2
+ require_relative 'die'
3
+ require_relative 'treasure_trove'
4
+ require_relative 'loaded_die'
5
+ module StudioGame
6
+ module GameTurn
7
+
8
+ def self.take_turn (player)
9
+ die = Die.new
10
+ number_rolled = die.roll
11
+ case number_rolled
12
+ when 1..2
13
+ player.blam
14
+ when 3..4
15
+ puts "#{player.name} was skipped."
16
+ else
17
+ player.w00t
18
+ end
19
+ random_treasure = TreasureTrove.random
20
+ player.found_treasure(random_treasure)
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'auditable'
2
+ module StudioGame
3
+ class LoadedDie
4
+ include Auditable
5
+ attr_reader :number
6
+ def roll
7
+
8
+ numbers = [1, 1, 2, 5, 6, 6]
9
+ @number = numbers.sample
10
+ audit
11
+ @number
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ module StudioGame
2
+ module Playable
3
+ def strong?
4
+ self.health > 100
5
+ end
6
+ def blam
7
+ self.health -= 10
8
+ puts "#{name} got blammed! "
9
+ end
10
+ def w00t
11
+ self.health += 15
12
+ puts "#{name} got w00ted!"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,64 @@
1
+ require_relative 'treasure_trove'
2
+ require_relative 'playable'
3
+ module StudioGame
4
+ class Player
5
+ include Playable
6
+ def initialize (name ="John Doe", health=100)
7
+ @name = name.capitalize
8
+ @health = health
9
+ @found_treasures = Hash.new(0)
10
+ end
11
+
12
+ attr_accessor :health
13
+ attr_accessor :name
14
+
15
+ def score
16
+ @health + points
17
+ end
18
+ def to_s
19
+ "I'm #{@name} with a health = #{@health}, points = #{points}, and score = #{score}"
20
+ end
21
+
22
+ def name=(new_name)
23
+ @name = new_name.capitalize
24
+ end
25
+ def <=>(other)
26
+ other.score <=> score
27
+ end
28
+
29
+
30
+ def found_treasure(treasure)
31
+ @found_treasures[treasure.name] += treasure.points
32
+ puts "#{name} found a #{treasure.name} worth #{treasure.points} points"
33
+ puts "#{name}'s treasures: #{@found_treasures}"
34
+ end
35
+
36
+ def each_found_treasure
37
+ @found_treasures.each do |name, point|
38
+ yield Treasure.new(name, point)
39
+ end
40
+ end
41
+
42
+ def points
43
+ @found_treasures.values.reduce(0){|sum, n| sum + n}
44
+ end
45
+
46
+ def self.from_csv(string)
47
+ name, health = string.split(",")
48
+ Player.new(name, Integer(health))
49
+ end
50
+
51
+
52
+
53
+ end
54
+
55
+ if __FILE__ == $0
56
+ player = Player.new("moe")
57
+ puts player.name
58
+ puts player.health
59
+ player.w00t
60
+ puts player.health
61
+ player.blam
62
+ puts player.health
63
+ end
64
+ end
@@ -0,0 +1,16 @@
1
+ module StudioGame
2
+ Treasure = Struct.new(:name, :points)
3
+ module TreasureTrove
4
+ TREASURES = [
5
+ Treasure.new(:pie, 5),
6
+ Treasure.new(:bottle, 25),
7
+ Treasure.new(:hammer, 50),
8
+ Treasure.new(:skillet, 100),
9
+ Treasure.new(:broomstick, 200),
10
+ Treasure.new(:crowbar, 400)
11
+ ]
12
+ def self.random
13
+ TREASURES.sample
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,36 @@
1
+ require 'studio_game/berserk_player'
2
+ module StudioGame
3
+ describe BerserkPlayer do
4
+
5
+ before do
6
+ @initial_health = 50
7
+ @player = BerserkPlayer.new("berserker", @initial_health)
8
+ end
9
+
10
+ it "does not go berserk when w00ted up to 5 times" do
11
+ 1.upto(5) { @player.w00t }
12
+
13
+ @player.berserk?.should be_false
14
+
15
+ # or if using Rspec 3.0:
16
+ # @player.berserk?.should be_falsey
17
+ end
18
+
19
+ it "goes berserk when w00ted more than 5 times" do
20
+ 1.upto(6) { @player.w00t }
21
+
22
+ @player.berserk?.should be_true
23
+
24
+ # or if using Rspec 3.0:
25
+ # @player.berserk?.should be_truthy
26
+ end
27
+
28
+ it "gets w00ted instead of blammed when it's gone berserk" do
29
+ 1.upto(6) { @player.w00t }
30
+ 1.upto(2) { @player.blam }
31
+
32
+ @player.health.should == @initial_health + (8 * 15)
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,32 @@
1
+ require 'studio_game/clumsy_player'
2
+ module StudioGame
3
+ describe ClumsyPlayer do
4
+ before do
5
+ @player = ClumsyPlayer.new("klutz")
6
+ end
7
+
8
+ it "only gets half the point value for each treasure" do
9
+ @player.points.should == 0
10
+
11
+ hammer = Treasure.new(:hammer, 50)
12
+ @player.found_treasure(hammer)
13
+ @player.found_treasure(hammer)
14
+ @player.found_treasure(hammer)
15
+
16
+ @player.points.should == 75
17
+
18
+ crowbar = Treasure.new(:crowbar, 400)
19
+ @player.found_treasure(crowbar)
20
+
21
+ @player.points.should == 275
22
+
23
+ yielded = []
24
+ @player.each_found_treasure do |treasure|
25
+ yielded << treasure
26
+ end
27
+
28
+ yielded.should == [Treasure.new(:hammer, 75), Treasure.new(:crowbar, 200)]
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,67 @@
1
+ require 'studio_game/game'
2
+ module StudioGame
3
+ describe Game do
4
+
5
+ before do
6
+ @game = Game.new("Knuckleheads")
7
+
8
+ @initial_health = 100
9
+ @player = Player.new("moe", @initial_health)
10
+ @rounds = 3
11
+
12
+ @game.add_player(@player)
13
+ end
14
+
15
+ it "w00t aplyer if a high number is roll" do
16
+ Die.any_instance.stub(:roll).and_return(5)
17
+
18
+ @game.play(@rounds)
19
+ @player.health.should == @initial_health + (15 * @rounds)
20
+ end
21
+
22
+ it "skips the player if a medium number is rolled" do
23
+ Die.any_instance.stub(:roll).and_return(3)
24
+
25
+ @game.play(@rounds)
26
+
27
+ @player.health.should == @initial_health
28
+ end
29
+
30
+ it "blam the player if a low number is rolled" do
31
+ Die.any_instance.stub(:roll).and_return(1)
32
+
33
+ @game.play(@rounds)
34
+
35
+ @player.health.should == @initial_health - (10 * @rounds)
36
+ end
37
+ it "assigns a treasure for points during a player's turn" do
38
+ game = Game.new("Knuckleheads")
39
+ player = Player.new("moe")
40
+
41
+ game.add_player(player)
42
+
43
+ game.play(1)
44
+
45
+ player.points.should_not be_zero
46
+
47
+ # or use alternate expectation syntax:
48
+ # expect(player.points).not_to be_zero
49
+ end
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,122 @@
1
+ require 'studio_game/player'
2
+ require 'studio_game/treasure_trove'
3
+ module StudioGame
4
+ describe Player do
5
+
6
+ before do
7
+ @initial_health = 100
8
+ @player = Player.new("simo",@initial_health)
9
+ end
10
+
11
+ it "has a cpitalized name" do
12
+ @player.name.should == "Simo"
13
+ end
14
+
15
+ it "has initial health" do
16
+ @player.health.should == 100
17
+ end
18
+
19
+ it "has a string representation" do
20
+ @player.found_treasure(Treasure.new(:hammer, 50))
21
+ @player.found_treasure(Treasure.new(:hammer, 50))
22
+
23
+ @player.to_s.should == "I'm Simo with a health = 100, points = 100, and score = 200"
24
+ end
25
+
26
+ it "computes a score as the sum of its health and points" do
27
+ @player.found_treasure(Treasure.new(:hammer, 50))
28
+ @player.found_treasure(Treasure.new(:hammer, 50))
29
+
30
+ @player.score.should == 200
31
+ end
32
+
33
+ it "increases health by 15 when wooted" do
34
+ @player.w00t
35
+ @player.health.should == @initial_health + 15
36
+ end
37
+ it "decreases health by 10 when blammed" do
38
+ @player.blam
39
+ @player.health.should == @initial_health - 10
40
+ end
41
+
42
+ it "computes points as the sum of all treasure points" do
43
+ @player.points.should == 0
44
+
45
+ @player.found_treasure(Treasure.new(:hammer, 50))
46
+
47
+ @player.points.should == 50
48
+
49
+ @player.found_treasure(Treasure.new(:crowbar, 400))
50
+
51
+ @player.points.should == 450
52
+
53
+ @player.found_treasure(Treasure.new(:hammer, 50))
54
+
55
+ @player.points.should == 500
56
+ end
57
+
58
+ it "yields each found treasure and its total points" do
59
+ @player.found_treasure(Treasure.new(:skillet, 100))
60
+ @player.found_treasure(Treasure.new(:skillet, 100))
61
+ @player.found_treasure(Treasure.new(:hammer, 50))
62
+ @player.found_treasure(Treasure.new(:bottle, 5))
63
+ @player.found_treasure(Treasure.new(:bottle, 5))
64
+ @player.found_treasure(Treasure.new(:bottle, 5))
65
+ @player.found_treasure(Treasure.new(:bottle, 5))
66
+ @player.found_treasure(Treasure.new(:bottle, 5))
67
+
68
+ yielded = []
69
+ @player.each_found_treasure do |treasure|
70
+ yielded << treasure
71
+ end
72
+
73
+ yielded.should == [
74
+ Treasure.new(:skillet, 200),
75
+ Treasure.new(:hammer, 50),
76
+ Treasure.new(:bottle, 25)
77
+ ]
78
+ end
79
+ it "can be created from a CSV string" do
80
+ player = Player.from_csv("larry,150")
81
+
82
+ player.name.should == "Larry"
83
+ player.health.should == 150
84
+ end
85
+
86
+ context "with a health greater to 100" do
87
+ before do
88
+ @player = Player.new("simo",150)
89
+ end
90
+
91
+ it "is strong" do
92
+ @player.should be_strong
93
+ end
94
+ end
95
+
96
+ context "with a health lesser to 100" do
97
+ before do
98
+ @player = Player.new("simo",70)
99
+ end
100
+
101
+ it "is wimpy" do
102
+ @player.should_not be_strong
103
+ end
104
+ end
105
+ context "in a collection of players" do
106
+ before do
107
+ @player1 = Player.new("moe", 100)
108
+ @player2 = Player.new("larry", 200)
109
+ @player3 = Player.new("curly", 300)
110
+
111
+ @players = [@player1, @player2, @player3]
112
+ end
113
+
114
+ it "is sorted by decreasing score" do
115
+ @players.sort.should == [@player3, @player2, @player1]
116
+ end
117
+ end
118
+
119
+ end
120
+
121
+
122
+ end
@@ -0,0 +1,59 @@
1
+ require 'studio_game/treasure_trove'
2
+ module StudioGame
3
+ describe Treasure do
4
+
5
+ before do
6
+ @treasure = Treasure.new(:hammer, 50)
7
+ end
8
+
9
+ it "has a name attribute" do
10
+ @treasure.name.should == :hammer
11
+ end
12
+
13
+ it "has a points attribute" do
14
+ @treasure.points.should == 50
15
+ end
16
+
17
+ end
18
+
19
+ describe TreasureTrove do
20
+
21
+ it "has six treasures" do
22
+ TreasureTrove::TREASURES.size.should == 6
23
+ end
24
+
25
+ it "has a pie worth 5 points" do
26
+ TreasureTrove::TREASURES[0].should == Treasure.new(:pie, 5)
27
+ end
28
+
29
+ it "has a bottle worth 25 points" do
30
+ TreasureTrove::TREASURES[1].should == Treasure.new(:bottle, 25)
31
+ end
32
+
33
+ it "has a hammer worth 50 points" do
34
+ TreasureTrove::TREASURES[2].should == Treasure.new(:hammer, 50)
35
+ end
36
+
37
+ it "has a skillet worth 100 points" do
38
+ TreasureTrove::TREASURES[3].should == Treasure.new(:skillet, 100)
39
+ end
40
+
41
+ it "has a broomstick worth 200 points" do
42
+ TreasureTrove::TREASURES[4].should == Treasure.new(:broomstick, 200)
43
+ end
44
+
45
+ it "has a crowbar worth 400 points" do
46
+ TreasureTrove::TREASURES[5].should == Treasure.new(:crowbar, 400)
47
+ end
48
+
49
+ it "returns a random treasure" do
50
+ treasure = TreasureTrove.random
51
+
52
+ TreasureTrove::TREASURES.should include(treasure)
53
+
54
+ # or use alternate expectation syntax:
55
+ # expect(TreasureTrove::TREASURES).to include(treasure)
56
+ end
57
+
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: studio_game_raf
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - Yassine Rafa
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-01-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: A game coded in Ruby following the Pragramtic Studio Ruby course
34
+ email: yassine@outlook.com
35
+ executables:
36
+ - studio_game
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - LICENSE
41
+ - README
42
+ - bin/high_scores.txt
43
+ - bin/players.csv
44
+ - bin/studio_game
45
+ - lib/studio_game/auditable.rb
46
+ - lib/studio_game/berserk_player.rb
47
+ - lib/studio_game/clumsy_player.rb
48
+ - lib/studio_game/die.rb
49
+ - lib/studio_game/game.rb
50
+ - lib/studio_game/game_turn.rb
51
+ - lib/studio_game/loaded_die.rb
52
+ - lib/studio_game/playable.rb
53
+ - lib/studio_game/player.rb
54
+ - lib/studio_game/treasure_trove.rb
55
+ - spec/studio_game/berserk_player_spec.rb
56
+ - spec/studio_game/clumsy_player_spec.rb
57
+ - spec/studio_game/game_spec.rb
58
+ - spec/studio_game/player_spec.rb
59
+ - spec/studio_game/treasure_trove_spec.rb
60
+ homepage: http://rafaonrails.com
61
+ licenses:
62
+ - MIT
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '1.9'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubygems_version: 3.1.4
80
+ signing_key:
81
+ specification_version: 4
82
+ summary: Little game to have fun
83
+ test_files:
84
+ - spec/studio_game/treasure_trove_spec.rb
85
+ - spec/studio_game/berserk_player_spec.rb
86
+ - spec/studio_game/player_spec.rb
87
+ - spec/studio_game/clumsy_player_spec.rb
88
+ - spec/studio_game/game_spec.rb