-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgeneracion.js
79 lines (68 loc) · 2.56 KB
/
generacion.js
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
//Generacion nivel
var globf_generarPlanetaRandom = function (rmin, rmax, juego) {
var vale, max;
var x, y, r, rg;
max = Date.now() + 1000; //1 segundo para generar de máximo
do {
r = (Math.random() * 10000) % (rmax - rmin) + rmin;
rg = r * 2.5;
vale = true;
x = (Math.random() * 10000) % (MAP.w - 2 * (rg + RADIO_BOLAS)) + rg + RADIO_BOLAS;
y = (Math.random() * 10000) % (MAP.h - 2 * (rg + RADIO_BOLAS)) + rg + RADIO_BOLAS;
for (var i in juego.planetas) {
var otroP = juego.planetas[i];
if (moduloVector(otroP.x - x, otroP.y - y) < otroP.rg + rg + 2 * RADIO_BOLAS) {
vale = false;
break;
}
}
} while (!vale && Date.now() < max);
if (!vale) return null;
return new Planeta(x, y, r, rg);
};
var globf_generarAgujeroRandom = function (c, rmin, rmax, juego) {
var vale, max;
var x, y, r;
vale = false;
max = Date.now() + 1000; //1 segundo para generar de máximo
do {
vale = true;
r = Math.round(Math.random() * (rmax - rmin)) + rmin;
x = Math.round(Math.random() * (MAP.w - 4 * r)) + r;
y = Math.round(Math.random() * (MAP.h - 4 * r)) + r;
for (var i in juego.planetas) {
var otroP = juego.planetas[i];
if (moduloVector(otroP.x - x, otroP.y - y) < otroP.rg + r + 2 * RADIO_BOLAS) {
vale = false;
break;
}
}
if (vale)
for (i in juego.agujeros) {
var otroA = juego.agujeros[i];
if (moduloVector(otroA.x - x, otroA.y - y) < otroA.r + r + 2 * RADIO_BOLAS) {
vale = false;
break;
}
}
} while (!vale && Date.now() < max);
if (!vale) return null;
var a = Math.random() * (r / rmax) * 1500 + 500;
return new Agujero(x, y, r, c, a);
};
//Generacion ingame
var globf_generarAsteroide = function (juego) {
var p = Math.floor(Math.random() * juego.planetas.length);
// Primero los que no tienen bolas, gracias
if (juego.planetas[p].bolas.length > 0) {
var pAlt = (p + 1) % juego.planetas.length;
while (juego.planetas[pAlt].bolas.length > 0 && pAlt !== p) {
pAlt = (pAlt + 1) % juego.planetas.length;
}
p = pAlt;
}
var ang = Math.floor(Math.random() * 2.5 * Math.PI);
return new Asteroide(
juego.planetas[p].x + juego.planetas[p].rg * Math.cos(ang),
juego.planetas[p].y + juego.planetas[p].rg * Math.sin(ang));
};