Fantasma.java
1 /**
2 * @author CARMEN ULDY SOTO SAENZ
3 * @author CLAUDIA LILIANA MATEUS NOVA
4 */
5 import java.awt.Color;
6 import java.awt.Graphics;
7
8 public class Fantasma extends ObjetoGrafico implements Runnable{
9 private Pinguino pinguino;
10 private Lienzo lienzo;
11 private Pared[] paredes;
12 public Fantasma (int x, int y,int a, int e, Pinguino p, Lienzo l, Pinguino poPinguino, Pared[] pareds) {
13 super (x, y, a ,e);
14 pinguino = p;
15 lienzo = l;
16 paredes = pareds;
17 }
18 public void paint (Graphics g){
19 if(visible){
20 g.setColor(Color.black);
21 //CUERPO
22 g.fillOval(getPosX() + (int)(getAncho() * 0.5), getPosY() + (int)(getAlto() * 0.5), (int)(getAncho() * 1), (int)(getAlto() * 1));
23 //MANO IZQUIERDA
24 g.fillArc(getPosX() + (int)(getAncho() * 0.04), getPosY() + (int)(getAlto() * 0.7), (int)(getAncho() * 0.58),(int)(getAlto() * 0.54), 2, 40);
25 //MANO DERECHA
26 g.fillArc(getPosX() + (int)(getAncho() * 1.4), getPosY() + (int)(getAlto() * 0.7), (int)(getAncho() * 0.58), (int)(getAlto() * 0.64), 145, 40);
27 //CACHO IZQUIERDO
28 g.fillArc(getPosX() + (int)(getAncho() * 0.6), getPosY() + (int)(getAlto() * 0), (int)(getAncho() * 0.51), (int)(getAlto() * 0.64), 250, 40);
29 //CACHO DERECHO
30 g.fillArc(getPosX() + (int)(getAncho() * 0.9), getPosY() + (int)(getAlto() * 0), (int)(getAncho() * 0.51), (int)(getAlto() * 0.64), 250, 40);
31
32 //CUERPO
33 g.setColor(Color.red);
34 g.fillOval(getPosX() + (int)(getAncho() * 0.57), getPosY() + (int)(getAlto() * 0.8), (int)(getAncho() * 0.91), (int)(getAlto() * 0.71));
35
36 //OJO
37 g.setColor(Color.gray);
38 g.fillOval(getPosX() + (int) (getAncho() * 0.68), getPosY() + (int) (getAlto() * 0.53), (int)(getAncho() * 0.66), (int)(getAlto() * 0.32));
39
40 g.setColor(Color.white);
41 //CUERPO
42 g.fillOval(getPosX() + (int) (getAncho() * 0.66), getPosY() + (int) (getAlto() * 0.81), (int)(getAncho() * 0.73), (int)(getAlto() * 0.72));
43 //OJO IZQUIERDO
44 g.fillOval(getPosX() + (int) (getAncho() * 0.77), getPosY() + (int) (getAlto() * 0.65), (int)(getAncho() * 0.25), (int)(getAlto() * 0.19));
45 //OJO DERECHO
46 g.fillOval(getPosX() + (int) (getAncho() * 1), getPosY() + (int) (getAlto() * 0.66), (int)(getAncho() * 0.25), (int)(getAlto() * 0.18));
47
48 g.setColor(Color.black);
49 //OJO IZQUIERDO
50 g.fillOval(getPosX() + (int) (getAncho() * 0.87), getPosY() + (int) (getAlto() * 0.68), (int)(getAncho() * 0.17), (int)(getAlto() * 0.13));
51 //OJO DERECHO
52 g.fillOval(getPosX() + (int) (getAncho() * 1), getPosY() + (int) (getAlto() * 0.69), (int)(getAncho() * 0.15), (int)(getAlto() * 0.12));
53
54 g.setColor(Color.red);
55 //OJO IZQUIERDO
56 g.fillOval(getPosX() + (int) (getAncho() * 0.92), getPosY() + (int) (getAlto() * 0.71), (int)(getAncho() * 0.1), (int)(getAlto() * 0.065));
57 //OJO DERECHO
58 g.fillOval(getPosX() + (int) (getAncho() * 1.04), getPosY() + (int) (getAlto() * 0.721), (int)(getAncho() * 0.080), (int)(getAlto() * 0.055));
59
60 //PRETINA
61 g.setColor(Color.orange);
62 g.fillArc(getPosX() + (int)(getAncho() * 0.54), getPosY() + (int)(getAlto() * 0.8), (int)(getAncho() * 0.95), (int)(getAlto() * 0.71), 180, 180);
63
64 //CALZON
65 g.setColor(Color.black);
66 g.fillArc(getPosX() + (int)(getAncho() * 0.56) , getPosY() + (int)(getAlto() * 0.99), (int)(getAncho() * 0.91), (int)(getAlto() * 0.5), 180, 180);
67
68 g.setColor(Color.orange);
69 //PIE IZQUIERDO
70 g.fillOval(getPosX() + (int)(getAncho() * 0.5), getPosY() + (int)(getAlto() * 1.42), (int)(getAncho() * 0.5), (int)(getAlto() * 0.14));
71 // PIE DERECHO
72 g.fillOval(getPosX() + (int)(getAncho() * 1.05), getPosY() + (int)(getAlto() * 1.42), (int)(getAncho() * 0.5), (int)(getAlto() * 0.14));
73 //NARIZ
74 g.fillArc(getPosX() + (int)(getAncho() * 0.76), getPosY() + (int)(getAlto() * 0.8), (int)(getAncho() * 0.5), (int)(getAlto() * 0.35), 60, 60);
75
76 }
77 }
78 public void explotar(Graphics g){
79 g.setColor(Color.orange);
80 g.fillOval(getPosX() + (int)(getAncho() * 0), getPosY() + (int)(getAlto() * 0), (int)(getAncho() * 0), (int)(getAlto() * 0));
81 }
82
83
84 public void run(){
85 for (;;){
86 if (colisiona(pinguino)){
87 setVisible(true);
88 pinguino.setVisible(false);
89 }
90 for(int i = 0; i < paredes.length; i++){
91 if(colisiona(paredes[i])){
92 setVisible(true);
93 paredes[i].setVisible(true);
94 }
95 }
96 int x = getPosX();
97 if (pinguino.getPosX() - x > 0){
98 setPosX(x + 10);
99
100 }
101 else{
102 setPosX(x - 10);
103 }
104 int y=getPosY();
105 if (pinguino.getPosY() - y > 0){
106 setPosY(y + 10);
107 }
108 else{
109 setPosY(y - 10);
110 }
111 lienzo.repaint();
112 try{Thread.sleep(3000);}catch(Exception e){}
113 }
114 }
115 }
CategoryJava | CategoryProgramacion
