Class: StudioGame::Game

Inherits:
Object
  • Object
show all
Defined in:
lib/studio_game/game.rb

Instance Method Summary collapse

Constructor Details

#initialize(title) ⇒ Game

Returns a new instance of Game.



5
6
7
8
# File 'lib/studio_game/game.rb', line 5

def initialize (title)
    @title = title
    @players = []
end

Instance Method Details

#add_player(player) ⇒ Object



25
26
27
# File 'lib/studio_game/game.rb', line 25

def add_player(player)
    @players << player
end

#high_score_entry(player) ⇒ Object



9
10
11
# File 'lib/studio_game/game.rb', line 9

def high_score_entry(player)
    "\n#{player.name.ljust(20,".")} #{player.score}"
end

#load_players(from_file) ⇒ Object



12
13
14
15
16
# File 'lib/studio_game/game.rb', line 12

def load_players(from_file)
    File.readlines(from_file).each do |line|
        add_player(Player.from_csv(line))
    end
end

#play(rounds) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/studio_game/game.rb', line 60

def play(rounds)
    1.upto(rounds) do |round|
        if block_given?
            break if yield
        else
            puts "\nRound #{round}"
            puts "There are #{@players.size} players in the game :"
            @players.each do|player|
                puts player
            end
            treasures = TreasureTrove::TREASURES
            puts "\nThere are #{treasures.size} treasures to be found :"
            treasures.each do |treasure| 
                puts "A #{treasure.name} is worth #{treasure.points} points"
            end
            @players.each do |player|  
                GameTurn.take_turn(player)
                puts player
            end
        end
    end
end


28
29
30
# File 'lib/studio_game/game.rb', line 28

def print_name_and_health(player)
  puts "#{player.name} (#{player.health})"
end


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/studio_game/game.rb', line 36

def print_stats
    strong_players, wimpy_players =  @players.partition { |player| player.strong? }
    puts "\n#{@title} Statistics"
    puts "\n#{strong_players.count} strong players:"
    strong_players.each do |player|
        print_name_and_health(player)
    end
    puts "\n#{wimpy_players.count} wimpy players:"
    wimpy_players.each do |player|
        print_name_and_health(player)
    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
    @players.sort.each do |player|
        puts high_score_entry(player)
    end
    puts "#{total_points} points from treasures found"
end

#save_high_scores(to_file = "high_scores.txt") ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/studio_game/game.rb', line 17

def save_high_scores(to_file="high_scores.txt")
    File.open(to_file, "w") do |file|
        file.puts "#{@title} High scores :"
        @players.sort.each do |player|
            file.puts high_score_entry(player)
        end
    end
end

#total_pointsObject



32
33
34
# File 'lib/studio_game/game.rb', line 32

def total_points
    @players.reduce(0) {|sum, player| sum + player.points}
end