import java.awt.*;
import java.util.Random;
import java.applet.*;


class osa
{
  private int x, y, suunta;
  
  public osa(int nx, int ny, int nsuunta)
  {
    x = nx;
    y = ny;
    suunta = nsuunta;
  }
  
  public int annaX()    { return x; }
  public int annaY()    { return y; }
  public int annaSuunta() { return suunta; }
  
  public void asetaX(int uusiX)   { x = uusiX; }
  public void asetaY(int uusiY)   { y = uusiY; }
  public void asetaSuunta(int uusiSuunta)  {suunta = uusiSuunta; }

}


 class kivi
{
        private int x,y;
       
        
        public kivi()
        {
                x=(int)(java.lang.Math.random()*450);
                y=-100;
             
                }
        
        public int annaX() {return x;}
        public int annaY() {return y;}
        public void asetaX(int uusiX) {x=uusiX;}
        public void asetaY(int uusiY) {y=uusiY;}
        
            public void lenna()
        {
              
               asetaY(annaY()+20);
                if (annaY()>=400)
              {  asetaY(10);
                 asetaX((int)(java.lang.Math.random()*450));
              }  
        }
        
      
} 
       


     
 class seina
{
        private int x,y,x1,y1;
       
        
        public seina(int nx, int ny, int nx1, int ny1)
        {
                x = nx;
                y = ny;
                x1 = nx1;
                y1 = ny1;

                }

        public int annaX() {return x;}
        public int annaY() {return y;}
        public int annaX1() {return x1;}
        public int annaY1() {return y1;}
        public void asetaX(int uusiX) {x=uusiX;}
        public void asetaY(int uusiY) {y=uusiY;}
        public void asetaX1(int uusiX1) {x1=uusiX1;}
        public void asetaY1(int uusiY1) {y1=uusiY1;}
        
      
} 
       


 class juusto
{
        private Random sat = new Random();
        private int px,py;
       
        
        public juusto()
        {
           
               px= java.lang.Math.abs(sat.nextInt()%470);
               py= java.lang.Math.abs(sat.nextInt()%320);
                 if (py < 50)
                 py= 50;
                 if (px < 25)
                 px=100;
                }
        
     
        public int annaPX() {return px;}
        public int annaPY() {return py;} 
        
      
        
      
}        
        

public class pupu
{
  private int x,y,suunta;
  
   public final int VASEN = -2;
   public final int OIKEA = 2;
   public final int YLOS = 1;
   public final int ALAS = -1;
  
   private final int OSAN_KOKO1 = 20;
   private final int OSAN_KOKO2 = 10;
   private final int OSAN_KOKO3 = 33;
   private final int OSAN_KOKO4 = 20;
   private final int OSAN_KOKO5 = 33;
   private final int OSAN_KOKO6 = 13; 
   private final int LEVEYS = 38*OSAN_KOKO1 +2;
   private final int KORKEUS = 25*OSAN_KOKO1 +2; 
   private final int MADON_MAXKOKO = 3;
    private final int mitat = 30;
   private int koko;
 
   public osa osat[] = new osa[MADON_MAXKOKO];
   private int suuntaTieto =  0;
   private int xa,xb,xc,ya,yb,yc,x1,x2,x3,y1,y2,y3;
   private int a = 0;
   private int b = 0;
   kivi Kivi = new kivi();
   kivi Kivi2 = new kivi();
   kivi Kivi3 = new kivi();
   seina Seina = new seina(100,150,250,5);
   seina Seina2 = new seina(350,150,5,100);
   seina Seina3 = new seina(100,300,250,5);
   juusto Juusto = new juusto();
   
 
    public pupu(int nx, int ny, int nsuunta)
  {
    x = nx;
    y = ny;
    suunta = nsuunta;
  }
   
   public int annaX()
   {
    return x;
   }
   
   public int annaY()
   {
    return y;
   }
  
   public void asetaX(int uusiX)   { x = uusiX; }
   public void asetaY(int uusiY)   { y = uusiY; }

   public int annaSuunta() { return suunta; }
 
   public void asetaSuunta(int uusiSuunta)  {suunta = uusiSuunta; }


   public void kaanny(int suunta)
   {
           suuntaTieto = suunta;
           
   }        

   
   public void liiku()
   {
    
         if (suuntaTieto != 0)
         asetaSuunta(suuntaTieto);
         
 
   
       switch (annaSuunta())
       {
               case OIKEA:asetaX(annaX()+(20));
               break;
               
               case ALAS:asetaY(annaY()+(20));
               break;
               
               case VASEN:asetaX(annaX()-(20));
               break;
               
               case YLOS:asetaY(annaY()-(20));
               break;
       } 
        
   
   }



   
   public boolean onkoKuollut()
   {
      if( (annaX() >=500 - OSAN_KOKO1) || (annaX() <= 0) || (annaY() >= 350 - OSAN_KOKO1)|| (annaY() <= 30))
      return true;   
 
     
    else  
   return false;
   }

   public boolean osui()
   {
           if((annaX()+20 >= Kivi.annaX())&&(annaX() <= Kivi.annaX()+30)&&(annaY()+20 >= Kivi.annaY())&&(annaY() <= Kivi.annaY()+50))
           return true;
           else
           return false;
    }

  public boolean osui2()
   {
           if((annaX()+20 >= Kivi2.annaX())&&(annaX() <= Kivi2.annaX()+30)&&(annaY()+20 >= Kivi2.annaY())&&(annaY() <= Kivi2.annaY()+50))
           return true;
           else
           return false;
    }

  public boolean osui3()
   {
           if((annaX()+20 >= Kivi3.annaX())&&(annaX() <= Kivi3.annaX()+20)&&(annaY()+20 >= Kivi3.annaY())&&(annaY() <= Kivi3.annaY()+30))
           return true;
           else
           return false;
    }


  public boolean osuiSeinaan()
  {
  	if((annaX()>=100)&&(annaX()<=350)&&(annaY()+20>=150)&&(annaY()+20<=165))
  	return true;
  	else
  	return false;
  }
  
  
  
  public boolean osuiSeinaan2()
  {
  	if((annaX()+10>=350)&&(annaX()+10<=360)&&(annaY()+20>=150)&&(annaY()+20<=250))
  	return true;
  	else
  	return false;
  }
  
  
   public boolean osuiSeinaan()
  {
  	if((annaX()>=100)&&(annaX()<=350)&&(annaY()+20>=300)&&(annaY()+20<=310))
  	return true;
  	else
  	return false;
  }
  
  
  	

public int syo()
{
        int pisteet = 0;
        if ((annaX()+50 >= Juusto.annaPX())&&(annaX() <= Juusto.annaPX()+20)&&(annaY()+40 >= Juusto.annaPY())&&(annaY() <= Juusto.annaPY()+15))
        {
                pisteet = 100;
                Juusto = new juusto();
            
        }
return pisteet;
}        

 public void piirraTera1(Graphics g)
 {
          xa = Kivi.annaX()+2;
             ya = Kivi.annaY()+44;
             x1 = Kivi.annaX()+5;
             y1 = Kivi.annaY()+50;
             
               g.setColor(Color.white);
             g.drawLine(xa+a,ya,x1+a,y1);
                     g.drawLine(xa+5+a,ya,x1+5+a,y1);
                     g.drawLine(xa+10+a,ya,x1+10+a,y1);
                     g.drawLine(xa+15+a,ya,x1+15+a,y1); 
                     g.drawLine(xa+20+b,ya,x1+20+b,y1); 
                     a+=6;
                     b+=6;
         
           
           if (a >= 26||b >= 16)
           {
           a = 0;
           b = 0;
           }
             
         }
 
 public void piirraTera2(Graphics g)
 {
          xb = Kivi2.annaX()+2;
             yb = Kivi2.annaY()+44;
             x2 = Kivi2.annaX()+5;
             y2 = Kivi2.annaY()+50;
             
              
             g.drawLine(xb+a,yb,x2+a,y2);
                     g.drawLine(xb+5+a,yb,x2+5+a,y2);
                     g.drawLine(xb+10+a,yb,x2+10+a,y2);
                     g.drawLine(xb+15+a,yb,x2+15+a,y2); 
                     g.drawLine(xb+20+b,yb,x2+20+b,y2); 
                     a+=6;
                     b+=6;
         
           
           if (a >= 26||b >= 16)
           {
           a = 0;
           b = 0;
           }
             
         } 
 

 


 
public void piirraValikuva(Graphics g)
{
              g.setColor(Color.red);
              g.drawString("Jos haluat tuloksesi tuloslistaan, kirjoita nimesi ylllä olevaan tekstikenttään ",40,50); 
              g.drawString("pelin loputtua ja paina ENTER ",40,70); 
              g.drawString("Auts !",250,200);
              g.drawRect(200,300,100,20);
              g.drawRect(100,200,100,20);
              g.drawString("Klikkaa uusi peli",206,319);
}  
   
 public void piirraPorkkana(Graphics g)
{
     int px=Juusto.annaPX();
     int py=Juusto.annaPY();
        int [] x ={px,px+20,px};
        int [] y ={py,py+5,py+12};
        g.setColor(Color.orange);
        g.fillPolygon(x,y,3);
        int [] x1 ={px-10,px,px-10};
        int [] y1 ={py+2,py+6,py+10};
        g.setColor(Color.green);
        g.fillPolygon(x1,y1,3);
 }
}
