-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathC1_Combat.pde
More file actions
90 lines (74 loc) · 2.98 KB
/
Copy pathC1_Combat.pde
File metadata and controls
90 lines (74 loc) · 2.98 KB
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
class SistemaPelea {
// Datos
Pelota[] pelotas; // Array para almacenar pelotas
int pelotasActual, pelotasInicial, cantidad, multiplicador;
int posX, posY, ancho, alto;
float velocidad;
// Se crea el objeto para pasar por valor al nivel y poder acceder a los personajes y los elementos de la interfaz
Nivel nivel;
SistemaPelea(Nivel nivel, int posX, int posY, int ancho, int alto) {
this.nivel = nivel;
// Inicialización de barra
this.posX = posX;
this.posY = posY;
this.alto = alto;
this.ancho = ancho;
// La cantidad de pelotas máximas se determina por el ancho de la barra del sistema de pelea
cantidad = abs(ceil((posX - ancho) / 70));
// println(cantidad); // Debugging
pelotas = new Pelota[cantidad];
// Inicialización de pelotas(máximas)
for (int i = 0; i < pelotas.length; i++) {
if (i == 0)
//pelotas[i] = new Pelota(posX + ancho + 100 * i + random(10, 45), posY + alto / 2, int(random(3)));
pelotas[i] = new Pelota(posX + ancho + 100, posY + alto / 2, nivel);
else
pelotas[i] = new Pelota(pelotas[i - 1].posX + 100 + random(50), posY + alto / 2, nivel);
}
velocidad = 3;
}
void pelea() {
// Se clippean las pelotas para que no salgan del cuadrado(ver nivel)
imageMode(CORNER);
clip(posX, posY, ancho, alto);
// Ciclo for para dibujar, mover, activar en colisión y detectar los golpes en las pelotas
for (int i = 0; i < pelotas.length; i++) {
pelotas[i].dibujar();
pelotas[i].mover(nivel.jugador);
pelotas[i].activar();
pelotas[i].golpear();
}
noClip();
// Este for solo se encarga de dibujar las particulas( que quedan fuera del clip y se superponen a las siguientes pelotas en el array)
for (int i = 0; i < pelotas.length; i++) {
if (pelotas[i].golpeada)
if (pelotas[i].bien())
pelotas[i].sp.dibujar();
}
}
// Funciones para volver crear una nueva pelota cuando estas se vayan fuera de la barra
void reiniciar() {
if (pelotas[0].posX <= (posX - 100)) {
destruir(0);
}
}
void destruir(int posEnArray) {
// Se mueven todas las pelotas una posición a la derecha en el arreglo
for (int i = posEnArray; i < pelotas.length - 1; i++) {
pelotas[i] = pelotas[i+1];
}
// Se desutruye la ultima en el arreglo, y se crea una nueva pelota en esta posición
pelotas[pelotas.length-1] = null;
agregarPelota();
}
void agregarPelota() {
for (int i = 0; i < pelotas.length; i++) {
if (pelotas[i] == null) {
if (i == 0) // Si la pelota, es la primera, esta se construye en base a la posición de la ultima pelota en el arreglo
pelotas[i] = new Pelota(pelotas[pelotas.length - 1].posX + 100 + random(50), posY + alto / 2, nivel);
else // Si la pelota no es la primera, se construye en base a la anterior en el arreglo
pelotas[i] = new Pelota(pelotas[i - 1].posX + 100 + random(50), posY + alto / 2, nivel);
}
}
}
}