Class: StudioGame::Game
- Inherits:
-
Object
- Object
- StudioGame::Game
- Includes:
- Auditable
- Defined in:
- lib/studio_game/game.rb
Instance Attribute Summary collapse
-
#players ⇒ Object
readonly
Returns the value of attribute players.
-
#title ⇒ Object
readonly
Returns the value of attribute title.
Instance Method Summary collapse
- #add_player(player) ⇒ Object
- #high_scores(players) ⇒ Object
-
#initialize(title) ⇒ Game
constructor
A new instance of Game.
- #load_players(file_name) ⇒ Object
- #play(rounds = 1) ⇒ Object
- #players_sorted ⇒ Object
- #print_stats ⇒ Object
- #roll_die ⇒ Object
- #save_high_scores(file_name = 'high_scores.txt') ⇒ Object
Methods included from Auditable
Constructor Details
#initialize(title) ⇒ Game
Returns a new instance of Game.
11 12 13 14 |
# File 'lib/studio_game/game.rb', line 11 def initialize(title) @title = title @players = [] end |
Instance Attribute Details
#players ⇒ Object (readonly)
Returns the value of attribute players.
9 10 11 |
# File 'lib/studio_game/game.rb', line 9 def players @players end |
#title ⇒ Object (readonly)
Returns the value of attribute title.
9 10 11 |
# File 'lib/studio_game/game.rb', line 9 def title @title end |
Instance Method Details
#add_player(player) ⇒ Object
47 48 49 |
# File 'lib/studio_game/game.rb', line 47 def add_player(player) @players << player end |
#high_scores(players) ⇒ Object
16 17 18 |
# File 'lib/studio_game/game.rb', line 16 def high_scores(players) players.map { |player| "#{player.name.ljust(50, '.')}#{player.score.to_s.rjust(5, ' ')}" } end |
#load_players(file_name) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/studio_game/game.rb', line 27 def load_players(file_name) if File.exist?(file_name) File.readlines(file_name, chomp: true).each do |line| player = Player.from_csv(line) add_player(player) end else puts 'whoops, no such file!' exit 1 end # File.readlines(file_name, chomp: true).each do |line| # player = Player.from_csv(line) # add_player(player) # end # rescue Errno::ENOENT # puts 'whoops, no such file!' # exit 1 end |
#play(rounds = 1) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/studio_game/game.rb', line 58 def play(rounds = 1) puts "\n" puts '*' * 50 puts 'Trasures available: ' puts TreasureTrove.treasure_items puts '*' * 50 puts "let's play #{@title}!" puts "\n" puts 'before playing:' puts @players puts "\n" 1.upto(rounds) do |round| puts "\nround #{round}:" roll_die_msg = '' @players.each do |player| number_rolled = roll_die case number_rolled when 1..2 player.drain roll_die_msg = "#{player.name} got drained ⬇️" when 3..4 roll_die_msg = "#{player.name} got skipped 😐" else player.boost roll_die_msg = "#{player.name} got boosted ⬆️" end current_treasure = TreasureTrove.random_treasure puts "#{roll_die_msg} / found #{current_treasure.name} worth #{current_treasure.points}" player.found_treasure(current_treasure.name, current_treasure.points) end end end |
#players_sorted ⇒ Object
93 94 95 |
# File 'lib/studio_game/game.rb', line 93 def players_sorted @players.sort_by { |p| p.score }.reverse end |
#print_stats ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/studio_game/game.rb', line 97 def print_stats puts "\n#{@title} Game Stats:" puts '-' * 50 puts players_sorted puts "\n" players_sorted.each do |p| puts "#{p.name}'s treasure point totals:" p.found_treasures.each do |name, points| puts "#{name}: #{points}" end puts "total: #{p.points}" puts "\n" end puts 'High Scores:' puts high_scores(players_sorted) end |
#roll_die ⇒ Object
51 52 53 54 55 56 |
# File 'lib/studio_game/game.rb', line 51 def roll_die rolled_number = rand(1..6) # rolled_number = [1, 1, 2, 5, 6, 6].sample audit(rolled_number) rolled_number end |
#save_high_scores(file_name = 'high_scores.txt') ⇒ Object
20 21 22 23 24 25 |
# File 'lib/studio_game/game.rb', line 20 def save_high_scores(file_name = 'high_scores.txt') File.open(file_name, 'w') do |file| file.puts("#{@title} High Scores:") file.puts high_scores(players_sorted) end end |