class StudioGame::Game
Public Class Methods
new(title)
click to toggle source
# File lib/studio_game/game.rb, line 7 def initialize(title) @die = Die.new @title = title @players = [] end
Public Instance Methods
add_player(player)
click to toggle source
# File lib/studio_game/game.rb, line 42 def add_player(player) @players << player end
load(file_name)
click to toggle source
# File lib/studio_game/game.rb, line 13 def load(file_name) default_players_file = File.join(File.dirname(__FILE__), '../../data/', 'players.csv') puts default_players_file file = file_name || default_players_file File.readlines(file).each do |line| # name,score = line.split(",") # player = Player.new(name, score.to_i) # add_player(player) add_player( Player.from_csv(line) ) end end
play( rounds )
click to toggle source
# File lib/studio_game/game.rb, line 94 def play( rounds ) treasures = TreasureTrove::TREASURES puts "There are #{@players.size} players in" status_report 1.upto( rounds) do |round| @players.each do |player| GameTurn.take_turn(player) puts player end end puts "\nThere are #{treasures.size} treasures to be found:" treasures.each do |treasure| puts "A #{treasure.name} is worth #{treasure.points} points" end status_report end
print_name_health(player)
click to toggle source
# File lib/studio_game/game.rb, line 59 def print_name_health(player) puts "#{player.name} (#{player.health})" end
print_stats()
click to toggle source
# File lib/studio_game/game.rb, line 63 def print_stats sorted = @players.sort{ |a,b| b.score <=> a.score } strong = @players.select{ |p| p.strong? }.sort wimpy = @players.reject{ |p| p.strong? }.sort puts "\n#{@title} Stats:" puts "\n#{strong.count} strong players:" strong.each do |player| # puts "#{player.name} (#{player.health})" print_name_health(player) end puts "\n#{wimpy.count} wimpy players:" wimpy.each do |player| puts "#{player.name} (#{player.health})" end puts "\n#{@title} high scores" @players.sort.each do |player| # formatted_name = player.name.ljust(20,'.') # puts "#{formatted_name} #{player.score}" player.format_score end @players.each do |player| puts "\n#{player.name}'s point totals:" player.each_found_treasure do |treasure| puts "* #{treasure.points} total #{treasure.name} points" end puts "#{player.points} grand total points" end end
save(file_name='player_rankings.csv')
click to toggle source
# File lib/studio_game/game.rb, line 26 def save(file_name='player_rankings.csv') File.open(file_name,'w') do |file| file.puts "GAME: #{@title}" file.puts "=" * "GAME: #{@title}".length file.puts file.puts "High Scores:" file.puts "-" * "High Scores:".length @players.sort.each do |player| # formatted_name = player.name.ljust(20, '.') # file.puts "#{formatted_name} #{player.score}" file.puts player.format_score end end end
start_report()
click to toggle source
# File lib/studio_game/game.rb, line 54 def start_report puts "There are #{@players.length} players in #{@title}:" status_report end
status_report()
click to toggle source
# File lib/studio_game/game.rb, line 46 def status_report puts puts "Player Status Report" @players.each do |p| puts p end end