sarge_gam 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: 6638162a2825a230516042e8938e690cfc9684987ae27564e7a0ed54f3d202bc
4
+ data.tar.gz: 56f902f9547aa362aa209c44510aac8f58c4e1e059c4973bdbc04923ee89447f
5
+ SHA512:
6
+ metadata.gz: a5b50409a9dcc0d984b35cc46a7d9b96c0cf09693727b3c4d63f4d8522f83d9500add6960c5e57d9394a5cbeccd46d4150b3057a692c56de1324fcc4da451488
7
+ data.tar.gz: eb290656849f244c636d13c160a19391980dd403414e109e7b297af28eb2ae7408b3f69c829f719dcddeb27f07dcdf3cb3ce8ee0f71df50120334edd8bc84629
@@ -0,0 +1,3 @@
1
+ Alvin,100
2
+ Simon,60
3
+ Theo,125
@@ -0,0 +1 @@
1
+ High Scores:
data/bin/sarge_gam ADDED
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/GamalielPelino/Agam11_split1'
4
+ require_relative '../lib/GamalielPelino/Agam11_split2'
5
+ require_relative '../lib/GamalielPelino/agam14_module'
6
+ require_relative '../lib/GamalielPelino/Agam16_symbol'
7
+ require_relative '../lib/GamalielPelino/Agam20_1'
8
+ require_relative '../lib/GamalielPelino/Agam20_2'
9
+ require_relative '../lib/GamalielPelino/Agam21_mix'
10
+
11
+ player1 = GamalielPelino::Player.new("moe")
12
+ player2 = GamalielPelino::Player.new("larry", 60)
13
+ player3 = GamalielPelino::Player.new("curly", 125)
14
+
15
+ knuckleheads = GamalielPelino::Game.new("knuckleheads")
16
+ default_player_file = File.join(File.dirname(__FILE__), 'Agam19_input.csv')
17
+ knuckleheads.load_players(ARGV.shift ||default_player_file)
18
+
19
+ # klutz = ClumsyPlayer.new("klutz", 105)
20
+ # knuckleheads.add_player(klutz)
21
+
22
+ # clumsy = ClumsyPlayer.new("klutz")
23
+ # hammer = Piece.new(:hammer, 50)
24
+ # clumsy.found_piece(hammer)
25
+ # clumsy.found_piece(hammer)
26
+ # clumsy.found_piece(hammer)
27
+ # crowbar = Piece.new(:crowbar, 400)
28
+ # clumsy.found_piece(crowbar)
29
+ # clumsy.each_found_piece do |itemss|
30
+ # puts "#{itemss.points} total #{itemss.item} points"
31
+ # end
32
+ # puts "#{clumsy.points} grand total points"
33
+
34
+ # berserker = BerserkerPLayer.new("Berserk", 50)
35
+ # knuckleheads.add_player(berserker)
36
+
37
+ # 6.times { berserker.w00t }
38
+
39
+ puts knuckleheads.title
40
+
41
+
42
+ loop do
43
+ puts" How many viewings? or ('exit' or 'quit') "
44
+ answer = gets.chomp.downcase
45
+ case answer
46
+ when /^\d+$/
47
+ knuckleheads.play(answer.to_i)
48
+ when 'quit' , 'exit'
49
+ knuckleheads.print_stats
50
+ knuckleheads.call_items
51
+ break
52
+ else
53
+ puts " Please enter a number or quit idiot"
54
+ end
55
+ end
56
+
57
+ # knuckleheads.save_high_scores
58
+
59
+
60
+
@@ -0,0 +1,58 @@
1
+ require_relative 'Agam11_split2'
2
+ require_relative 'Agam16_symbol'
3
+ require_relative 'Agam21_mix'
4
+
5
+ module GamalielPelino
6
+ class Player
7
+ include Playable
8
+
9
+ attr_accessor :name, :health
10
+ def initialize(name, health=100)
11
+ @name = name.capitalize
12
+ @health = health
13
+ @found_pieces = Hash.new(0)
14
+ end
15
+
16
+ def name
17
+ "#{@name}"
18
+ end
19
+
20
+ def found_piece(itemss)
21
+ @found_pieces[itemss.item] += itemss.points
22
+ puts "#{@name}'s treasures: #{@found_pieces}"
23
+ end
24
+
25
+
26
+ def each_found_piece
27
+ @found_pieces.each do |item, points|
28
+ yield Piece.new(item, points)
29
+ end
30
+ end
31
+
32
+ def points
33
+ @found_pieces.values.reduce(0, :+)
34
+ end
35
+
36
+ def health
37
+ "#{@health}"
38
+ end
39
+
40
+ def score
41
+ halt = @health
42
+ halt += @name.length
43
+ end
44
+
45
+ def self.from_csv(string)
46
+ name, health = string.split(',')
47
+ Player.new(name, Integer(health))
48
+ end
49
+
50
+ def to_csv
51
+ "#{@name},#{@health}"
52
+ end
53
+
54
+ def to_s
55
+ "I'm #{@name} with a health of #{@health} and my score is #{score}"
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,114 @@
1
+ require_relative 'Agam11_split1'
2
+ require_relative 'agam14_module'
3
+ require_relative 'Agam16_symbol'
4
+
5
+ require_relative 'Agam21_audit'
6
+
7
+ module GamalielPelino
8
+ class Die
9
+ include Auditable
10
+ attr_reader :number
11
+
12
+ def initialize
13
+ roll
14
+ end
15
+
16
+ def roll
17
+ @number = rand(1..6)
18
+ audit
19
+ @number
20
+ end
21
+ end
22
+ end
23
+
24
+ module GamalielPelino
25
+ class Game
26
+
27
+ def initialize(playlist)
28
+ @playlist = playlist
29
+ @players = []
30
+ end
31
+
32
+ def add_player(player)
33
+ @players << player
34
+ end
35
+
36
+ def play(rounds)
37
+ puts "There are #{@players.size} players in #{@playlist}:"
38
+
39
+ @players.each do |player|
40
+ puts player
41
+ end
42
+ 1.upto(rounds) do |count|
43
+ puts "\n rounds #{count}"
44
+ @players.each do |player|
45
+ GameTurn.take_turn(player)
46
+ puts player
47
+ end
48
+
49
+ end
50
+ end
51
+
52
+ def load_players(default_player_file)
53
+ File.readlines(default_player_file).each do |line|
54
+ add_player(Player.from_csv(line))
55
+ end
56
+ end
57
+
58
+ # def save_high_scores(to_file="Agam19_save.csv")
59
+ # File.open(to_file, "w") do |file|
60
+ # file.puts "#{@title} High Scores:"
61
+ # @players.sort.each do |player|
62
+ # file.puts player.to_csv
63
+ # end
64
+ # end
65
+ # end
66
+
67
+
68
+ def print_stats
69
+ strong_players, wimpy_players = @players.partition { |player| player.strong? }
70
+
71
+ puts "\n#{@title} Statistics:"
72
+
73
+ puts "#{strong_players.size} strong players:"
74
+
75
+ strong_players.each do |player|
76
+ puts "#{player.name} (#{player.health})"
77
+ end
78
+
79
+ puts "\n#{wimpy_players.size} wimpy players:"
80
+
81
+ wimpy_players.each do |player|
82
+ puts "#{player.name} (#{player.health})"
83
+ end
84
+
85
+ sorted_players = @players.sort { |a, b| b.score <=> a.score }
86
+
87
+ puts "\n#{@title} High Scores:"
88
+
89
+ sorted_players.each do |player|
90
+ formatted_name = player.name.ljust(20, '.')
91
+ puts "#{formatted_name} #{player.score}"
92
+ end
93
+
94
+ # puts "\n#{@title} High Scores:"
95
+ # @players.sort.each do |player|
96
+ # puts high_score_entry(player)
97
+ # end
98
+ end
99
+
100
+ def title
101
+ "==#{@playlist}=="
102
+ end
103
+
104
+ def call_items
105
+ items = Item::PIECE
106
+ puts "\n There are #{items.size} treasure to be found:"
107
+
108
+ items.each do |call|
109
+ puts "A #{call.item} is worth #{call.points} points"
110
+ end
111
+
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,12 @@
1
+ module GamalielPelino
2
+ class Die
3
+ def initialize(roll)
4
+ @roll = roll
5
+ end
6
+
7
+ def roll
8
+ rand 1..6
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,16 @@
1
+
2
+ Piece = Struct.new(:item, :points)
3
+
4
+ module Item
5
+ PIECE = [
6
+ Piece.new(:pie, 5),
7
+ Piece.new(:bottle,25),
8
+ Piece.new(:hammer,50),
9
+ Piece.new(:skillet,50),
10
+ Piece.new(:broomstick,200),
11
+ Piece.new(:crowbar,400)
12
+ ]
13
+ def self.random
14
+ PIECE.sample
15
+ end
16
+ end
@@ -0,0 +1,4 @@
1
+ File.readlines("Agam19_input.csv").each do |line|
2
+ puts line
3
+ end
4
+
@@ -0,0 +1,37 @@
1
+ require_relative 'Agam11_split1'
2
+ require_relative 'agam14_module'
3
+
4
+ module GamalielPelino
5
+ class ClumsyPlayer < Player
6
+
7
+
8
+ # def found_piece(itemss)
9
+ # Piece.new(itemss.item, itemss.points / 2.0)
10
+ # damaged_piece = Piece.new(itemss.item, itemss.points / 2.0)
11
+ # super(damaged_piece)
12
+ # end
13
+
14
+ def found_piece(itemss)
15
+ points = itemss.points / 2.0
16
+ @found_pieces[itemss.item] += points
17
+ puts "#{@name} found a #{itemss.item} worth #{points} points."
18
+
19
+ end
20
+
21
+ end
22
+ end
23
+ # if __FILE__ == $0
24
+ # clumsy = ClumsyPlayer.new("klutz")
25
+ # hammer = Piece.new(:hammer, 50)
26
+ # clumsy.found_piece(hammer)
27
+ # clumsy.found_piece(hammer)
28
+ # clumsy.found_piece(hammer)
29
+ # crowbar = Piece.new(:crowbar, 400)
30
+ # clumsy.found_piece(crowbar)
31
+ # clumsy.each_found_piece do |itemss|
32
+ # puts "#{itemss.points} total #{itemss.item} points"
33
+ # end
34
+ # puts "#{clumsy.points} grand total points"
35
+
36
+ # end
37
+
@@ -0,0 +1,31 @@
1
+ require_relative 'Agam11_split1'
2
+ require_relative 'Agam11_split2'
3
+ module GamalielPelino
4
+ class BerserkerPLayer < Player
5
+
6
+ def initialize(name, health=100)
7
+ super(name, health)
8
+ @w00t_count = 0
9
+ end
10
+
11
+ def berserk?
12
+ @w00t_count > 5
13
+ end
14
+
15
+ def w00t
16
+ super
17
+ @w00t_count +=1
18
+ puts "#{@name} is berserk!" if berserk?
19
+ end
20
+
21
+ def blam
22
+ berserk? ? w00t : super
23
+ end
24
+
25
+ end
26
+ end
27
+ # if __FILE__ == $0
28
+ # berserker = BerserkerPLayer.new("berserker", 50)
29
+ # 6.times { berserker.w00t }
30
+ # end
31
+
@@ -0,0 +1,5 @@
1
+ module Auditable
2
+ def audit
3
+ puts "Rolled a #{self.number} (#{self.class})"
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'Agam21_audit'
2
+ module GamalielPelino
3
+ class Loaded_Die
4
+
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
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+
2
+ module Playable
3
+
4
+ def blam
5
+ @health -= 10
6
+ puts "#{@name} got blammed!"
7
+ end
8
+
9
+ def w00t
10
+ @health += 15
11
+ puts "#{@name} got wooted! "
12
+ end
13
+
14
+ def strong?
15
+ @health > 100
16
+ end
17
+
18
+ end
@@ -0,0 +1,30 @@
1
+ require_relative 'Agam11_split2'
2
+ require_relative 'Agam11_split1'
3
+ require_relative 'Agam16_symbol'
4
+ require_relative 'Agam21_loadedDie'
5
+
6
+
7
+
8
+ module GameTurn
9
+ def self.take_turn(player)
10
+ die = GamalielPelino::Loaded_Die.new
11
+ case die.roll
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
+
20
+ itemss = Item.random
21
+ puts "#{player.name} found a #{itemss.item} worth #{itemss.points} points."
22
+ puts player.found_piece(itemss)
23
+
24
+ puts "\n#{player.name}'s total points:"
25
+ player.each_found_piece do |itemss|
26
+ puts "#{itemss.points} total #{itemss.item} points"
27
+ end
28
+ puts "#{player.points} grand total points \n "
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sarge_gam
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Gamaliel B. Pelino
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-02-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: gampelinoo1@gmail.com
15
+ executables:
16
+ - sarge_gam
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/Agam19_input.csv
21
+ - bin/Agam19_save.csv
22
+ - bin/sarge_gam
23
+ - lib/GamalielPelino/Agam11_split1.rb
24
+ - lib/GamalielPelino/Agam11_split2.rb
25
+ - lib/GamalielPelino/Agam13_Die.rb
26
+ - lib/GamalielPelino/Agam16_symbol.rb
27
+ - lib/GamalielPelino/Agam19_file.rb
28
+ - lib/GamalielPelino/Agam20_1.rb
29
+ - lib/GamalielPelino/Agam20_2.rb
30
+ - lib/GamalielPelino/Agam21_audit.rb
31
+ - lib/GamalielPelino/Agam21_loadedDie.rb
32
+ - lib/GamalielPelino/Agam21_mix.rb
33
+ - lib/GamalielPelino/agam14_module.rb
34
+ homepage: http://pragmaticstudio.com
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '1.9'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubygems_version: 3.0.3
54
+ signing_key:
55
+ specification_version: 4
56
+ summary: Training Ruby _GAMALIEL
57
+ test_files: []