Monkey.java
1 /**
2 * @author Erika Lorena Pulido Moreno
3 * @author Johanna Paola Bravo Tovar
4 */
5
6 import java.awt.Color;
7 import java.awt.Graphics;
8
9 public class Monkey extends ObjetoGrafico implements Runnable {
10 private Coco coco;
11 private Lienzo lienzo;
12 private Ficha ficha[];
13 private Lago lago;
14 public Monkey (int x, int y, int a, int d, Coco c, Lienzo l, Ficha[] f, Lago lg){
15 super (x, y, a, d);
16 coco = c;
17 lienzo = l;
18 ficha = f;
19 lago = lg;
20 }
21 public void paint(Graphics g){
22 if(visible){
23 g.setColor(new Color (50,20,3));
24 //cara
25 g.fillOval(getPosX() + (int)(getAncho() * 0.20), getPosY() + (int)(getAlto() * 0.10), (int)(getAncho() * 0.88), (int)(getAlto() * 0.27));
26 g.fillOval(getPosX() + (int)(getAncho() * 0.00), getPosY() + (int)(getAlto() * 0.25), (int)(getAncho() * 1.33), (int)(getAlto() * 0.20));
27 //cuello
28 g.fillRect(getPosX() + (int)(getAncho() * 0.52), getPosY() + (int)(getAlto() * 0.40), (int)(getAncho() * 0.22), (int)(getAlto() * 0.06));
29 //tronco
30 g.fillOval(getPosX() + (int)(getAncho() * 0.35), getPosY() + (int)(getAlto() * 0.45), (int)(getAncho() * 0.55), (int)(getAlto() * 0.34));
31 //brazos
32 g.fillRect(getPosX() + (int)(getAncho() * 0.15), getPosY() + (int)(getAlto() * 0.50), (int)(getAncho() * 1), (int)(getAlto() * 0.03));
33 //piernas
34 g.fillRect(getPosX() + (int)(getAncho() * 0.42), getPosY() + (int)(getAlto() * 0.75), (int)(getAncho() * 0.1), (int)(getAlto() * 0.10));
35 g.fillRect(getPosX() + (int)(getAncho() * 0.71), getPosY() + (int)(getAlto() * 0.75), (int)(getAncho() * 0.1), (int)(getAlto() * 0.10));
36 g.setColor(Color.pink);
37 // cara
38 g.fillOval(getPosX() + (int)(getAncho() * 0.35), getPosY() + (int)(getAlto() * 0.15), (int)(getAncho() * 0.66), (int)(getAlto() * 0.20));
39 g.fillOval(getPosX() + (int)(getAncho() * 0.10), getPosY() + (int)(getAlto() * 0.30), (int)(getAncho() * 1.11), (int)(getAlto() * 0.10));
40 //tronco
41 g.fillOval(getPosX() + (int)(getAncho() * 0.45), getPosY() + (int)(getAlto() * 0.50), (int)(getAncho() * 0.33), (int)(getAlto() * 0.27));
42 g.setColor(Color.black);
43 //ojos
44 g.fillOval(getPosX() + (int)(getAncho() * 0.70), getPosY() + (int)(getAlto() * 0.23), (int)(getAncho() * 0.15), (int)(getAlto() * 0.04));
45 g.fillOval(getPosX() + (int)(getAncho() * 0.50), getPosY() + (int)(getAlto() * 0.23), (int)(getAncho() * 0.15), (int)(getAlto() * 0.04));
46 //boca
47 g.fillOval(getPosX() + (int)(getAncho() * 0.50), getPosY() + (int)(getAlto() * 0.34), (int)(getAncho() * 0.33), (int)(getAlto() * 0.03));
48 }
49 }
50 boolean colisionaConUnabaldosa(Ficha[] ficha){
51 for (int i = 0; i < ficha.length; i++){
52 Baldosa baldosa[] = ficha[i].getBaldosas();
53 for(int j = 0; j < ficha[i].getNumBal(); j++){
54 if( baldosa[j].colisiona(this) && ficha[i].getPosicionada()){
55 return true;
56 }
57 }
58 }
59 return false;
60 }
61 public void run (){
62
63 for (;;){
64
65 //System.err.println("getPosX()=" + getPosX() + " getPosY()=" + getPosY());
66 if (getVisible ()){
67 if (colisiona(coco)){
68 coco.setVisible(false);
69 setAncho(40);
70 setAlto(80);
71 }
72 //
73 int x = getPosX();
74 if(coco.getPosX() - x > 0){
75 moverDerecha(10);
76 if(colisiona(lago)){
77 if( ! colisionaConUnabaldosa(ficha)){
78 moverIzquierda(10);
79 }
80 }
81 }
82 else{
83 moverIzquierda(10);
84 if(colisiona(lago)){
85 int i;
86 for (i = 0; i < ficha.length; i++){
87 Baldosa baldosa[] = ficha[i].getBaldosas();
88 int j;
89 for(j = 0; j < ficha[i].getNumBal() && ! colisiona(baldosa [j]); j++){
90 }
91 if (j >= baldosa.length){
92 moverDerecha (10);
93 }
94 }
95 }
96 }
97 int y = getPosY();
98 if(coco.getPosY() > y){
99 moverAbajo(10);
100 if(colisiona(lago)){
101 if( ! colisionaConUnabaldosa(ficha)){
102 moverArriba(10);
103 }
104 }
105 }
106 else{
107 moverArriba(10);
108 if(colisiona(lago)){
109 int i;
110 for (i = 0; i < ficha.length; i++){
111 Baldosa baldosa[] = ficha[i].getBaldosas();
112 int j;
113 for(j = 0; j < ficha[i].getNumBal() &&! colisiona(baldosa [j]); j++){
114 }
115 if (j >= baldosa.length){
116 moverAbajo (10);
117 }
118 }
119 }
120 }
121 lienzo.repaint();
122 try{Thread.sleep(1000);}catch(Exception e){}
123 }
124 }
125 }
126 }
CategoryJava | CategoryProgramacion
