-
Notifications
You must be signed in to change notification settings - Fork 1
/
meteoro.lua
113 lines (84 loc) · 2.63 KB
/
meteoro.lua
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
meteoro = {}
-- Gerando meteros na tela
function meteoro.spawn()
vetor = {}
vetor.imagem = love.graphics.newImage("/imagens/asteroid.png")
vetor.largura = vetor.imagem:getWidth()/2
vetor.altura = vetor.imagem:getHeight()/2
vetor.x = player.x
vetor.y = 0
vetor.velocidade = 7
vetor.angulo = 0
vetor.numero_de_balas = 0
table.insert(meteoro.tabela, vetor)
end
-- Verificando colisao entre balas e meteoro
function verificar_colisao_entre_balas_e_meteoro()
for i,m in ipairs(meteoro.tabela) do
for j,b in ipairs(player.balas) do
-- Canto direito inferior
if ((b.x + b.largura >= m.x and b.x + b.largura <= m.x + m.largura) and (b.y + b.altura >= m.y and b.y + b.altura <= m.y + m.altura)) then
table.remove(player.balas, j)
if m.numero_de_balas ~= 0 then
table.remove(meteoro.tabela, i)
else
m.numero_de_balas = m.numero_de_balas + 1
end
-- Canto direito superior
else if ((b.x + b.largura >= m.x and b.x + b.largura <= m.x + m.largura) and (b.y >= m.y and b.y <= m.y + m.altura)) then
table.remove(player.balas, j)
if m.numero_de_balas ~= 0 then
table.remove(meteoro.tabela, i)
else
m.numero_de_balas = m.numero_de_balas + 1
end
-- Canto esquerdo superior
else if ((b.x >= m.x and b.x <= m.x + m.largura) and (b.y >= m.y and b.y <= m.y + m.altura)) then
table.remove(player.balas, j)
if m.numero_de_balas ~= 0 then
table.remove(meteoro.tabela, i)
else
m.numero_de_balas = m.numero_de_balas + 1
end
-- Canto esquerdo inferior
else if ((b.x >= m.x and b.x <= m.x + m.largura) and (b.y + b.altura >= m.y and b.y + b.altura <= m.y + m.altura)) then
table.remove(player.balas, j)
if m.numero_de_balas ~= 0 then
table.remove(meteoro.tabela, i)
else
m.numero_de_balas = m.numero_de_balas + 1
end
end
end
end
end
end
end
end
-- Carrengando as propriedades do Objeto Meteoro
function meteoro.load()
meteoro.tabela = {}
meteoro.tempo = 0
end
-- Atualizando as propriedades do Objeto Meteoro
function meteoro.update(dt)
meteoro.tempo = meteoro.tempo + 0.1
if meteoro.tempo >= 30.0 then
meteoro.spawn()
meteoro.tempo = 0
end
for i,m in ipairs(meteoro.tabela) do
if m.y > love.window.getHeight() + 10 then
table.remove(meteoro.tabela, i)
end
m.y = m.y + m.velocidade
m.angulo = m.angulo + 5
end
verificar_colisao_entre_balas_e_meteoro()
end
-- Desenhando Objeto Meteoro na tela
function meteoro.draw()
for _,m in pairs(meteoro.tabela) do
love.graphics.draw(m.imagem, m.x, m.y, math.rad(m.angulo), 1, 1, m.largura, m.altura)
end
end