studio_gem 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: 6b67fe71b9f679816ab3297b472e2822db66ae1c978c4a9d68112824fce04161
4
+ data.tar.gz: '089a062c1753f6828201d0dbde5eaaa8fe42351e6e5458a7dc32736309739364'
5
+ SHA512:
6
+ metadata.gz: baa8520ea115d7d969230a0893827396bccea6cab281978c841de4399e204e3c8a355db15fb0e998f663e22f4a7f2407d0de75c2cf278bc4c1577f2624cfbc54
7
+ data.tar.gz: e8d20f12311159e9db5ea2d26070f37a16a49ea45f4279cbb10e4788c1c64f05ebbdab6e40424e17157e83ae6b44edad7f9846978aea42cf94f61b677b172eb6
data/bin/studio_gem ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative "./../lib/studio_game"
data/files/players.csv ADDED
@@ -0,0 +1,3 @@
1
+ Alvin, 100
2
+ Simon, 60
3
+ Theo, 125
data/lib/auditable.rb ADDED
@@ -0,0 +1,5 @@
1
+ module Auditable
2
+ def audit
3
+ puts "Rolled a #{@number}(#{self.class})"
4
+ end
5
+ end
@@ -0,0 +1,36 @@
1
+ require_relative "./player"
2
+ class BerserkPlayer < Player
3
+ attr_reader :w00tcount
4
+ def initialize(name, health)
5
+ super(name, health)
6
+ @w00tcount = 0
7
+ end
8
+ def w00t
9
+ @w00tcount += 1
10
+ if @w00tcount > 5
11
+ puts "#{name} is berserk!!"
12
+ end
13
+ super()
14
+ end
15
+ def blam
16
+ if @w00tcount > 5
17
+ w00t
18
+ else
19
+ super()
20
+ end
21
+ end
22
+ def berserk?
23
+ if @w00tcount > 5
24
+ true
25
+ else
26
+ false
27
+ end
28
+ end
29
+ end
30
+ if __FILE__ == $0
31
+ berserker = BerserkPlayer.new("berserker", 50)
32
+ 6.times{berserker.w00t}
33
+ 2.times{berserker.blam}
34
+ puts berserker.health
35
+ puts berserker.berserk?
36
+ end
data/lib/bonus.rb ADDED
@@ -0,0 +1,12 @@
1
+ hash = {c:3,e:1,i:1,n:1,t:1,x:8,y:4}
2
+ puts "Please Enter the letter "
3
+ letter = gets
4
+ total = 0
5
+ letter.each_char do |c|
6
+ hash.each do |key,value|
7
+ if c == key.to_s
8
+ total += value
9
+ end
10
+ end
11
+ end
12
+ puts total
@@ -0,0 +1,20 @@
1
+ require_relative "./player"
2
+ class ClumsyPlayer < Player
3
+ def found_treasure(treasure)
4
+ @found_treasures[treasure.name] += Integer(treasure.point/2.0)
5
+ puts "#{@name} found a treasure #{treasure.name} of worth #{treasure.point/2}"
6
+ end
7
+ end
8
+ if __FILE__ == $0
9
+ clumsy = ClumsyPlayer.new("klutz")
10
+ hammer = Treasure.new(:hammer,50)
11
+ clumsy.found_treasure(hammer)
12
+ clumsy.found_treasure(hammer)
13
+ clumsy.found_treasure(hammer)
14
+ crowbar = Treasure.new(:crowbar,400)
15
+ clumsy.found_treasure(crowbar)
16
+ clumsy.each_found_treasure do |treasure|
17
+ puts "#{treasure.point} total #{treasure.name} points"
18
+ end
19
+ puts "#{clumsy.points} grand total points"
20
+ end
data/lib/die.rb ADDED
@@ -0,0 +1,13 @@
1
+ require_relative "./auditable"
2
+ class Die
3
+ include Auditable
4
+ def roll
5
+ @number = rand(1..6)
6
+ audit
7
+ @number
8
+ end
9
+ end
10
+ if __FILE__ == $0
11
+ die = Die.new
12
+ die.roll
13
+ end
data/lib/game.rb ADDED
@@ -0,0 +1,90 @@
1
+ require_relative "./player"
2
+ require_relative "./die"
3
+ require_relative "./game_turn"
4
+ require_relative "./treasure_trove"
5
+ class Game
6
+ $total_points =0
7
+ attr_reader :title, :players
8
+ def initialize(title)
9
+ @title = title
10
+ @players = []
11
+ @strong = []
12
+ @wimpy = []
13
+ @files = []
14
+ end
15
+ def load_player(file_path)
16
+ File.open(file_path) do |aFile|
17
+ aFile.each_line do |line|
18
+ @files<<line
19
+ end
20
+ end
21
+ @files.each do |i|
22
+ add_player(Player.from_csv(i))
23
+ end
24
+ end
25
+ def add_player(player)
26
+ @players.push(player)
27
+ end
28
+ def print_name_and_health(player)
29
+ puts "#{player.name}(#{player.health})"
30
+ end
31
+ def print_stats
32
+ puts "#{@title} Statistatics :- \n\n"
33
+ @strong,@wimpy = @players.partition{|player| player.strong?}
34
+ puts "#{@strong.length} strong player:"
35
+ @strong.each do |player|
36
+ print_name_and_health(player)
37
+ end
38
+ puts "#{@wimpy.length} Wimpy player : "
39
+ @wimpy.each do |player|
40
+ print_name_and_health(player)
41
+ end
42
+ puts "#{@title} High Score : "
43
+ @players.sort.each do |player|
44
+ puts "#{player.name.ljust(10,".")}#{player.score}"
45
+ end
46
+
47
+ puts "Points Table"
48
+ @players.each do |player|
49
+ puts "#{player.name} points table:"
50
+ puts "#{player.points} grand total !!"
51
+
52
+ end
53
+ puts total_points
54
+ @players.each do |player|
55
+ player.each_found_treasure do |treasure|
56
+ puts "#{treasure.name.ljust(10,".")}#{treasure.point}"
57
+ end
58
+ end
59
+ end
60
+ def play(count)
61
+ 1.upto(count.to_i) do |time|
62
+ puts "Round #{time}"
63
+ @players.each do |player|
64
+ GameTurn.take_turn(player)
65
+ puts player
66
+ end
67
+ end
68
+ treasure = TreasureTrove::TREASURES
69
+ puts "There are #{treasure.size} treasures to be found"
70
+ treasure.each do |treasure|
71
+ puts "A #{treasure.name} is worth #{treasure.point} points"
72
+ end
73
+ end
74
+ def total_points
75
+ @players.each do |player|
76
+ player.found_treasures.each do |key,value|
77
+ $total_points += value
78
+ end
79
+ end
80
+ $total_points
81
+ end
82
+ def save_high_score(file_name = "high_score.txt")
83
+ file = File .open(file_name,"a")
84
+ file.puts "knucleheads high scores!!!!"
85
+ players.sort.each do |player|
86
+ file.puts "#{player.name.ljust(10,".")}#{player.score}"
87
+ end
88
+ end
89
+ end
90
+
data/lib/game_turn.rb ADDED
@@ -0,0 +1,16 @@
1
+ module GameTurn
2
+ def self.take_turn(player)
3
+ die = Die.new
4
+ case die.roll
5
+ when 5..6
6
+ player.w00t
7
+ when 1..2
8
+ player.blam
9
+ when 3..4
10
+ puts "#{player.name} was skipped"
11
+ end
12
+ player.found_treasure(TreasureTrove.random)
13
+ puts "#{player.name} treasures: #{player.found_treasures}"
14
+ end
15
+ end
16
+
@@ -0,0 +1,12 @@
1
+ knucleheads high scores!!!!
2
+ Alvin.....300
3
+ Berserker.250
4
+ Klutz.....220
5
+ Theo......165
6
+ Simon.....100
7
+ knucleheads high scores!!!!
8
+ Berserker.730
9
+ Alvin.....605
10
+ Simon.....490
11
+ Theo......370
12
+ Klutz.....295
data/lib/loaded_die.rb ADDED
@@ -0,0 +1,13 @@
1
+ require_relative "auditable"
2
+ class LoadedDie
3
+ include Auditable
4
+ attr_reader :number
5
+ def roll
6
+ numbers = [1,1,2,5,6,6]
7
+ @number = numbers.sample
8
+ audit
9
+ @number
10
+ end
11
+ end
12
+ load = LoadedDie.new
13
+ load.roll
data/lib/playable.rb ADDED
@@ -0,0 +1,19 @@
1
+ module Playable
2
+ def blam
3
+ @health = @health - 10
4
+ puts "#{name} got blammed!"
5
+ health
6
+ end
7
+ def w00t
8
+ @health = @health + 15
9
+ puts "#{name} got w00ted!!"
10
+ @health
11
+ end
12
+ def strong?
13
+ if @health >100
14
+ return true
15
+ else
16
+ return false
17
+ end
18
+ end
19
+ end
data/lib/player.rb ADDED
@@ -0,0 +1,61 @@
1
+ require_relative "./treasure_trove.rb"
2
+ require_relative "./playable.rb"
3
+ class Player
4
+ include Playable
5
+ attr_accessor :hash, :found_treasures
6
+ attr_writer :health
7
+ def initialize(name,health=100)
8
+ @name = name.capitalize
9
+ @health = health
10
+ @found_treasures = Hash.new(0)
11
+ end
12
+ def self.from_csv(line)
13
+ name,health = line.split(",")
14
+ if health.nil?
15
+ health = "100"
16
+ end
17
+ Player.new(name,health.to_i)
18
+ end
19
+ def to_s
20
+ "I'm #{@name} with a health of #{@health} and a score of #{score}"
21
+ end
22
+ def health
23
+ @health
24
+ end
25
+ def name
26
+ @name
27
+ end
28
+ def name=(name)
29
+ @name = name.capitalize
30
+ end
31
+ def score
32
+ @health + self.points
33
+ end
34
+ def <=>(other_player)
35
+ other_player.score <=> score
36
+ end
37
+ def found_treasure(treasure)
38
+ @found_treasures[treasure.name] += Integer(treasure.point)
39
+ puts "#{name} found a treasure #{treasure.name} of worth #{treasure.point}"
40
+ end
41
+ def points
42
+ all_points = 0
43
+ @found_treasures.each do |treasure|
44
+ all_points += treasure.last
45
+ end
46
+ all_points
47
+ end
48
+ def each_found_treasure
49
+ @found_treasures.each do |treasure|
50
+ obj = Treasure.new(treasure.first,treasure.last)
51
+ yield obj
52
+ end
53
+ end
54
+ def to_csv
55
+ "#{name.ljust(10,".")} #{score}"
56
+ end
57
+ end
58
+ if __FILE__ == $0
59
+ player = Player.new("moe")
60
+ puts player.points
61
+ end
@@ -0,0 +1,22 @@
1
+ require_relative "./game"
2
+ require_relative "./clumsy_player"
3
+ require_relative "./berserkplayer"
4
+ clumsy = ClumsyPlayer.new("klutz",105)
5
+ berserker = BerserkPlayer.new("berserker",50)
6
+ knuckleheads = Game.new("Knuckleheads")
7
+ puts knuckleheads.title
8
+ knuckleheads.add_player(clumsy)
9
+ knuckleheads.add_player(berserker)
10
+ knuckleheads.load_player(File.expand_path("../../files/players.csv",__FILE__))
11
+ loop do
12
+ puts "Enter the number of times you want to run the code or exit"
13
+ n = gets
14
+ case n
15
+ when /^\d+/
16
+ knuckleheads.play(n)
17
+ knuckleheads.print_stats
18
+ knuckleheads.save_high_score
19
+ when exit
20
+ break
21
+ end
22
+ end
@@ -0,0 +1,13 @@
1
+ Treasure = Struct.new(:name, :point)
2
+ module TreasureTrove
3
+ TREASURES=Array.new
4
+ TREASURES<<Treasure.new("pie", 5)
5
+ TREASURES<<Treasure.new("bottle", 25)
6
+ TREASURES<<Treasure.new("hammer", 50)
7
+ TREASURES<<Treasure.new("skillet", 100)
8
+ TREASURES<<Treasure.new("broomstick", 200)
9
+ TREASURES<<Treasure.new("crowbar", 400)
10
+ def self.random
11
+ TreasureTrove::TREASURES.shuffle.first
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: studio_gem
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - triptibhangade
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-06-20 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ - tripti.bhangade@gemsessence.com
16
+ executables:
17
+ - studio_gem
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - bin/studio_gem
22
+ - files/players.csv
23
+ - lib/auditable.rb
24
+ - lib/berserkplayer.rb
25
+ - lib/bonus.rb
26
+ - lib/clumsy_player.rb
27
+ - lib/die.rb
28
+ - lib/game.rb
29
+ - lib/game_turn.rb
30
+ - lib/high_score.txt
31
+ - lib/loaded_die.rb
32
+ - lib/playable.rb
33
+ - lib/player.rb
34
+ - lib/studio_game.rb
35
+ - lib/treasure_trove.rb
36
+ homepage: http://gemsessence.com
37
+ licenses:
38
+ - Nonstandard
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.7.6
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: Players
60
+ test_files: []