-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathgame.rb
66 lines (52 loc) · 1.4 KB
/
game.rb
1
2
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'gosu'
require 'players'
module BattleBots
class Game < Gosu::Window
include BattleBots::Players
attr_accessor :bullets, :players, :explosions
def initialize(x=1200, y=800, resize=false)
super
@players = player_list
@bullets = []
@explosions = []
@winner_played = false
@font = Gosu::Font.new(self, Gosu::default_font_name, 200)
end
def update
bullets.each do |bullet|
bullet.move
bullet.decay
end
bullets.delete_if { |bullet| bullet.decayed? }
players.each do |player|
player.hit? bullets
player.play
end
players.delete_if { |player| player.dead? }
end
def draw
[players, bullets, explosions].each do |collection_of_drawables|
collection_of_drawables.each { |drawable| drawable.draw }
end
if players.length == 1
display_winner players.first
end
end
def button_up(id)
end
def button_down(id)
close if id == Gosu::KbEscape
end
private
def display_winner(proxy)
@font.draw("WINNER!", 200, 300, 0, 1.0, 1.0, 0xffffff00)
unless @winner_played
Gosu::Sample.new(self, "media/you-win.mp3").play
@winner_played = true
end
end
end
end
BattleBots::Game.new.show