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


CategoryProgramacion

Java/Programas/Monkey/Monkey.java (last edited 2008-11-13 13:33:00 by ErikaPaola)