3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/road_to_rubykaigi/game.rb', line 3
def run
ANSI.clear
last_time = Time.now
accumulator = 0.0
$stdin.raw do
loop do
RoadToRubykaigi.debug.clear
process_input($stdin.read_nonblock(4, exception: false))
if @game_manager.result?
print(@game_manager.render_result)
exit
else
current_time = Time.now
accumulator += current_time - last_time
last_time = current_time
while accumulator >= Manager::GameManager::UPDATE_RATE
@game_manager.update
@physics_engine.simulate
@update_manager.update(offset_x: @game_manager.offset_x)
@collision_manager.process
accumulator -= Manager::GameManager::UPDATE_RATE
end
@drawing_manager.draw(offset_x: @game_manager.offset_x) unless @game_manager.game_over?
end
puts RoadToRubykaigi.debug
sleep Manager::GameManager::FRAME_RATE
end
end
end
|