Calaveragg1.java
Categorías: CategoryJava | CategoryProgramacion |
1 package savetheearthsk;
2
3 import java.awt.Color;
4 import java.awt.Graphics;
5 import java.util.ArrayList;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
8
9 /**
10 * Calaveragg1: Es una clase la cual contiuene un objeto grafico el cual se toma
11 * como bala y/o objetivos a "destruir".
12 * Hereda de ObjetoGrafico
13 * Implementa caracteristicas de Runnable
14 * @author Luisa Fernanda Rueda Herrera
15 * @author George Sebastian Parra Macias
16 */
17 public class Calaveragg1 extends ObjetoGrafico implements Runnable {
18
19 /**
20 * Atributos enteros (constantes) de izquierda, centro, derecha, que designan la direccion de la calaveragg
21 */
22 private static final int izquierda = 0, centro = 1, derecha = 2;
23 /**
24 * Atributo privado de tipo Color guarda el color principal de la calaveragg
25 */
26 private Color color;
27 /**
28 * Atributo privado de tipo Pared [] guarda un areglo de paredes para las coliciones
29 */
30 private Pared[] pared;
31 /**
32 * Atributo privado de tipo entero (int) que guarda el puntaje del jugador
33 */
34 private int cantidad;
35 /**
36 * Atributo privado de tipo Lienzo guarda el lienzo utilizado para dibujar los objetos
37 */
38 private Lienzo lienzo;
39 /**
40 * Atributo privado de tipo Puntaje que muestra el puntaje en el lienzo
41 */
42 private Puntaje puntaje;
43 /**
44 * Atributo privado de tipo ArrayList guarda un arreglo de calaverasgg
45 */
46 private ArrayList<Calaveragg1> calaveras;
47 /**
48 * Atributo privado de tipo Boolean nos dice si la calaveragg se esta moviendo
49 */
50 private boolean caminando = true;
51 /**
52 * Atributo privado de tipo Entero (int) cambiar ladireccion de la calaveragg
53 */
54 private int direccion;
55 /**
56 * Atributo privado que guarda un arreglo de tipo Pared de la parte inferior de la pntalla
57 */
58 private Pared[] pared1;
59 /**
60 * Atributo privado que guarda un arreglo de tipo Pared de la parte izquierda de la pantalla
61 */
62 private Pared[] pared2;
63 /**
64 * Atributo privado que guarda un arreglo de tipo Pared de la parte derecha de la pantalla
65 */
66 private Pared[] pared3;
67 /**
68 *
69 */
70 private int velocidad;
71
72 /**
73 * Constructora de Calaveragg1
74 * @param alto guarda la medida de la altura de la calaveragg
75 * @param ancho guarda la medida del ancho de la calaveragg
76 * @param calaveras guarda un arreglo de calaveragg
77 * @param color guarda el color de calaveragg
78 * @param lienzo mostrar la calaveragg
79 * @param paredes para encerrar los demas objetos graficos
80 * @param puntaje se le suma una cantidad cada ves que colisiona
81 * @param x guarda la pocicion en el eje x de la calaveragg
82 * @param y guarda la pocicion en el eje y de la calaveragg
83 */
84 public Calaveragg1(int x, int y, int ancho, int alto, Color color, Pared[] paredes, Pared[] paredes1, Pared[] paredes2, Pared[] paredes3, Lienzo lienzo, ArrayList<Calaveragg1> calaveras, Puntaje puntaje, Configuracion configuracion) {
85 /**
86 * Atributos heredados de la superclase ObjetoGrafico que nos da la pocicion, el alto y el ancho de la calaveragg
87 */
88 super(x, y, ancho, alto);
89 /**
90 * asignacion de la variable color desde el parameto recibido color asigna la variable un color
91 */
92 this.color = color;
93 /**
94 * asignacion de la variable pared desde el parameto recibido pared
95 */
96 this.pared = paredes;
97 /**
98 * asignacion de la variable puntaje desde el parameto recibido puntaje
99 */
100 this.puntaje = puntaje;
101 /**
102 * asignacion de la variable lienzo desde el parameto recibido lienzo
103 */
104 this.lienzo = lienzo;
105 /**
106 * asignacion de la variable calaveras des de el parameto recibido calaveras
107 */
108 this.calaveras = calaveras;
109 /**
110 * asigna un valor a la variable direccion
111 */
112 direccion = 1;
113 this.pared1 = paredes1;
114 this.pared2 = paredes2;
115 this.pared3 = paredes3;
116 this.velocidad = configuracion.velocidadBala;
117
118 }
119
120 /**
121 * Metodo grafico para dibujar la calaveragg en el lienzo
122 */
123 public void paint(Graphics g) {
124 /**
125 * Condicional para dibujar la calaveragg si el boolean es tru
126 */
127 if (visible) {
128 /**
129 * circulo grande
130 */
131 g.setColor(color);
132 g.fillOval(x + 15 * ancho / 200, y + 30 * alto / 250, 180 * ancho / 200, 180 * alto / 250);
133
134
135 /**
136 *Pupila ojo pequeno
137 */
138 g.setColor(Color.BLACK);
139 g.fillOval(x + 95 * ancho / 200, y + 75 * alto / 250, 10 * ancho / 200, 14 * alto / 250);
140
141 /**
142 * Pupila ojo grande
143 */
144 g.setColor(Color.BLACK);
145 g.fillOval(x + 115 * ancho / 200, y + 65 * alto / 250, 13 * ancho / 200, 20 * alto / 250);
146
147 /**
148 * Linea ojo pequeno
149 */
150 g.setColor(Color.black);
151 int[] linea1x = {
152 x + 80 * ancho / 200,
153 x + 95 * ancho / 200,};
154 int[] linea1y = {
155 y + 150 * alto / 250,
156 y + 160 * alto / 250,};
157 g.fillPolygon(linea1x, linea1y, 2);
158
159 /**
160 * Linea ojo grande
161 */
162 g.setColor(color);
163 int[] linea2x = {
164 x + 95 * ancho / 200,
165 x + 122 * ancho / 200,};
166 int[] linea2y = {
167 y + 157 * alto / 250,
168 y + 157 * alto / 250,};
169 g.fillPolygon(linea2x, linea2y, 2);
170
171 /**
172 * Boca
173 */
174 g.setColor(color);
175 int[] Bocax = {
176 x + 90 * ancho / 200,
177 x + 130 * ancho / 200,};
178 int[] Bocay = {
179 y + 20 * alto / 250,
180 y + 20 * alto / 250,};
181 g.fillPolygon(Bocax, Bocay, 2);
182
183 /**
184 * Cuadro
185 */
186 g.setColor(color);
187 int[] Cuadrox = {
188 x + 123 * ancho / 200,
189 x + 133 * ancho / 200,
190 x + 133 * ancho / 200,
191 x + 155 * ancho / 200,
192 x + 155 * ancho / 200,
193 x + 144 * ancho / 200,};
194 int[] Cuadroy = {
195 y + 31 * alto / 250,
196 y + 21 * alto / 250,
197 y + 21 * alto / 250,
198 y + 31 * alto / 250,
199 y + 30 * alto / 250,
200 y + 46 * alto / 250,};
201 g.fillPolygon(Cuadrox, Cuadroy, 6);
202
203 /**
204 * Tira
205 */
206 g.setColor(color);
207 int[] Tirax = {
208 x + 143 * ancho / 200,
209 x + 160 * ancho / 200,};
210 int[] Tiray = {
211 y + 88 * alto / 250,
212 y + 70 * alto / 250,};
213 g.fillPolygon(Tirax, Tiray, 2);
214
215 /**
216 * Estrella
217 */
218 g.setColor(color);
219 int[] Estrellax = {
220 x + 150 * ancho / 200,
221 x + 162 * ancho / 200,
222 x + 154 * ancho / 200,
223 x + 159 * ancho / 200,};
224 int[] Estrellay = {
225 y + 15 * alto / 250,
226 y + 19 * alto / 250,
227 y + 17 * alto / 250,
228 y + 23 * alto / 250,};
229 g.fillPolygon(Estrellax, Estrellay, 4);
230
231 }
232 }
233
234 /**
235 * Debuelve el valor de la variable color
236 *@return
237 */
238 public Color getColor() {
239 return color;
240 }
241
242 /**
243 *metodo para mover la calaveragg en la direccion que tenga asignada
244 */
245 public void run() {
246 for (; getVisible();) {
247 if (caminando) {
248 /**
249 * mueve la calaveragg en la direccion 0(izguierda)
250 */
251 if (direccion == izquierda) {
252 decY(2);
253 decX(2);
254 for (int i = 0; i < pared2.length; i++) {
255 if (this.colisiona(pared2[i]) == true) {
256 direccion = derecha;
257 }
258 }
259 } else if (direccion == centro) {
260 decY(2);
261 for (int i = 0; i < pared1.length; i++) {
262 decY(1);
263 }
264 } /**
265 * mueve la calaveragg en la direccion 2(derecha)
266 */
267 else if (direccion == derecha) {
268 decY(2);
269 incX(2);
270 for (int i = 0; i < pared3.length; i++) {
271 if (this.colisiona(pared3[i]) == true) {
272 direccion = izquierda;
273 }
274
275 }
276 }
277 /**
278 *comprueba si la calaveragg disparada es del mismo color de la calaveragg con la que choca
279 */
280 for (Calaveragg1 calaveragg1 : calaveras) {
281 if (this.colisiona(calaveragg1)) {
282 if (color == calaveragg1.getColor()) {
283 setVisible(false);
284 calaveragg1.setVisible(false);
285 /**
286 * suma un puntaje al puntaje total
287 */
288 puntaje.sumar();
289 } else {
290 caminando = false;
291 }
292 }
293 }
294 try {
295 Thread.sleep(velocidad);
296 } catch (InterruptedException ex) {
297 Logger.getLogger(Calaveragg1.class.getName()).log(Level.SEVERE, null, ex);
298 }
299 lienzo.repaint();
300 }
301 }
302 }
303
304 /**
305 * suma X puntos a al puntaje
306 */
307 public void sumar() {
308 cantidad += 200;
309
310 }
311
312 /**
313 * retorna el puntaje actual
314 * @return cantidad
315 */
316 public int getCantidad() {
317 return cantidad;
318
319
320 }
321 // public boolean caminanB = true;
322
323 /**
324 * cambia el valor de la direccion a la izguierda
325 */
326 public void irIzquierda() {
327 direccion = izquierda;
328 }
329
330 /**
331 * cambia el valor de la direccion a la derecha
332 */
333 public void irDerecha() {
334 direccion = derecha;
335 }
336
337 /**
338 * cambia el valor de la direccion al centro
339 */
340 public void irCentro() {
341 direccion = centro;
342 }
343
344 /**
345 * retorna la direccion actual de la calaveragg
346 * @return direccion
347 */
348 public int getDireccion() {
349 return direccion;
350 }
351 public boolean caminanB = true;
352 }
