class StudioGameModule::Game

Attributes

title[R]

Public Class Methods

new(title) click to toggle source
# File lib/studio_game_module/game.rb, line 9
def initialize(title)
  @title = title
  @players = []
end

Public Instance Methods

add_player(player) click to toggle source
# File lib/studio_game_module/game.rb, line 14
def add_player(player)
  @players << player
end
load_players(filename="players.csv") click to toggle source
# File lib/studio_game_module/game.rb, line 17
def load_players(filename="players.csv")
  File.readlines(filename).each do |line|
    add_player(Player.from_csv(line))
  end
end
play(rounds) click to toggle source
# File lib/studio_game_module/game.rb, line 30
def play(rounds)
  puts "There are #{@players.size} players in #{@title}: "

  display_players

  display_treasures(TreasureTrove::TREASURES)

  1.upto(rounds) do |r|
    puts "\nRound #{r}:"
    @players.each do |p|
      GameTurn.take_turn(p)
      puts p
    end
  end
end
print_stats() click to toggle source
save_high_scores(filename="high_scores.txt") click to toggle source
# File lib/studio_game_module/game.rb, line 22
def save_high_scores(filename="high_scores.txt")
  File.open(filename, "w") do |file|
    file.puts("Knuckleheads High Scores:")
    @players.sort.each do |p|
      file.puts formatted_player(p)
    end
  end
end

Private Instance Methods

display_player_stats(kind, players_array) click to toggle source
# File lib/studio_game_module/game.rb, line 100
def display_player_stats(kind, players_array)
  puts ""
  puts "#{players_array.size} #{kind} players"
  players_array.each do |p|
    puts "#{p.name} (#{p.health})"
  end
end
display_players() click to toggle source
# File lib/studio_game_module/game.rb, line 88
def display_players
  @players.each do |p|
    puts p
  end
end
display_players_score() click to toggle source
# File lib/studio_game_module/game.rb, line 107
def display_players_score
  # sorted_players =  @players.sort { |a,b| b.score <=> a.score }
  # sorted_players.each do |p|
  #   puts "#{p.name.ljust(30, '.')} (#{p.score})"
  # end
  @players.sort.each do |p|
   puts formatted_player(p)
 end
end
display_total_points() click to toggle source
# File lib/studio_game_module/game.rb, line 81
def display_total_points
  @players.each do |p|
    puts "#{p.name} point totals:"
    puts "#{p.points} grand total points"
    puts ""
  end
end
display_total_points_per_player() click to toggle source
# File lib/studio_game_module/game.rb, line 71
def display_total_points_per_player
  @players.each do |p|
    puts ""
    puts "#{p.name} point totals:"
    p.each_found_treasure do |treasure|
      puts "#{treasure.points} total  #{treasure.name} points"
    end
    puts "#{p.points} grand total points"
  end
end
display_treasures(treasures) click to toggle source
# File lib/studio_game_module/game.rb, line 93
def display_treasures(treasures)
  puts ""
  puts "number of treasures : #{treasures.size}"
  treasures.each do |t|
    puts "A #{t.name} is worth #{t.points} points"
  end
end
formatted_player(player) click to toggle source
# File lib/studio_game_module/game.rb, line 68
def formatted_player(player)
  "#{player.name.ljust(30, '.')} (#{player.score})"
end