Class: MonkeyMusic::Game

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

Instance Method Summary collapse

Constructor Details

#initialize(level, players, ui) ⇒ Game

Returns a new instance of Game.



7
8
9
10
11
# File 'lib/monkey_music/game.rb', line 7

def initialize(level, players, ui)
  @level = level
  @players = players
  @ui = ui
end

Instance Method Details

#startObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/monkey_music/game.rb', line 13

def start
  # Send initial state to players
  init_threads = []
  @players.each do |p|
    init_threads << Thread.new { p.init! }
  end
  init_threads.each(&:join)
  # Start the game
  @level.turn_limit.times do |turn|
    turn += 1
    break if @level.complete?
    # Query players for moves
    query_threads = []
    turn_time = Benchmark.realtime do
      @players.each do |p|
        query_threads << Thread.new { p.query! turn }
      end
      query_threads.each(&:join)
    end
    # Move players in random order
    @players.shuffle.each { |p| p.move! }
    ## Update ui
    @ui.update(turn, turn_time)
  end
end