/
game.rb
61 lines (53 loc) · 1.17 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
class Game
attr_accessor :cue, :players, :pits
attr_accessor :players, :balls
def self.width
500
end
def self.height
500
end
def initialize(player)
self.balls = []
self.pits = []
self.players = []
self.players << player
pits << Pit.new(75,75)
pits << Pit.new(Game::width-75, 75)
pits << Pit.new(75, Game::height-75)
pits << Pit.new(Game::width-75, Game::height-75)
self.cue = Cue.new
10.times {generate_ball}
end
def add_player(player)
raise unless players.length > 1
end
def generate_ball
ballX = 0
ballY = 0
overlap = false
begin
overlap = false
ballX = 50+rand(400)
ballY = 50+rand(400)
balls.each do |ball|
if (dist(ball.x, ball.y, ballX, ballY) < 40)
overlap = true
end
end
if (dist(cue.x, cue.y, ballX, ballY) < 40)
overlap = true
end
pits.each do |pit|
if (dist(pit.x, pit.y, ballX, ballY) < 40)
overlap = true
end
end
end while overlap==true
balls << Ball.new(ballX, ballY)
end
def other_players(player)
r = players.reject{|p| p==player}
r
end
end