/* Kastikeste mng. Tuleb saada kastid omale kohale.
 * 
 */

import java.awt.*; 
import java.awt.event.*;
import java.applet.Applet;

public class Kastimang extends Applet implements KeyListener{
    int m1=35;
	int m2=35;

	int x1=125;
	int y1=65;
	int x2=125;
	int y2=95;

	int takistus=0;
	int takistus2=0;

  public Kastimang(){
    addKeyListener(this);
	
  }

  public void paint(Graphics g){
	  //mehike
	  g.setColor(Color.blue);
	  g.fillRect(m1, m2, 20, 20);
	  g.setColor(Color.yellow);
	  g.fillOval(m1-2, m2-2, 24, 24);
	  //tase 1
	  g.setColor(Color.black);
	  g.drawRect(30, 30, 150, 120);
	  g.drawLine(90, 60, 90, 90);
	  g.drawLine(90, 60, 120, 60);
	  g.drawLine(150, 120, 150, 150);
	  g.drawRect(65, 125, 20, 20);
	  g.drawRect(95, 125, 20, 20);
	  //kastid
	  g.setColor(Color.red);
	  g.fillRect(x1, y1, 20, 20);
	  g.fillRect(x2, y2, 20, 20);
	  //lpp
	  if((x1==65 && y1==125 && x2==95 && y2==125) || (x1==95 && y1==125 && x2==65 && y2==125))
	  g.fillRect(30,30,150,120);

      //kontakt kastiga
	  	  if(x1-m1==30 && y1-m2==0) takistus=1; // vasakul, kast 1
	  else if(x1-m1==0 && y1-m2==30) takistus=2; //leval
	  else if(x1-m1==-30 && y1-m2==0) takistus=3; //paremal
	  else if(x1-m1==0 && y1-m2==-30) takistus=4; //all
	      else takistus=0;
	      if(x2-m1==30 && y2-m2==0) takistus2=5; // vasakul, kast 2
	  else if(x2-m1==0 && y2-m2==30) takistus2=6; //leval
	  else if(x2-m1==-30 && y2-m2==0) takistus2=7; //paremal
	  else if(x2-m1==0 && y2-m2==-30) takistus2=8; //all
	  else takistus2=0;
  }

  // LIIKUMINE
  public void keyPressed(KeyEvent e){ //  VASAKULE
    int kood=e.getKeyCode();
    if(kood==KeyEvent.VK_LEFT){
	   if(takistus==3 || takistus2==7){
		if(m1==65) m1=m1;
		else if(m1==125 && m2==65) m1=m1;
		else if(m1==155 && m2==125) m1=m1;
		else if(x2-x1==-30 && y1==y2){ m1=m1; x1=x1;} //kaks kasti ksteise krval
		else if(x1-x2==-30 && y1==y2){ m1=m1; x2=x2;} //kaks kasti ksteise krval
		else if(takistus==3) x1=x1-30;
		else if(takistus2==7) x2=x2-30;
		else m1=m1-30;
	   }else{
		if(m1==35) m1=m1;
		else if(m1==95 && m2==65) m1=m1;
		else if(m1==155 && m2==125) m1=m1;
		//else if(takistus==3) x1=x1-30;
		else m1=m1-30;
	   }
	}
    if(kood==KeyEvent.VK_RIGHT){  //  PAREMALE
	   if(takistus==1 || takistus2==5){
		if(m1==125) m1=m1;
		else if(m1==35 && m2==65) m1=m1;
		else if(m1==95 && m2==125) m1=m1;
		else if(x2-x1==30 && y1==y2){ m1=m1; x1=x1;} //kaks kasti ksteise krval
		else if(x1-x2==30 && y1==y2){ m1=m1; x2=x2;} //kaks kasti ksteise krval
		else if(takistus==1) x1=x1+30;  //  // nendes kahes on KALA !!!!!! ja seda kigis neljas asjas
		else if(takistus2==5) x2=x2+30;  //  \\
		else if(m1==65 && m2==65) x1=x1;
		else m1=m1+30;
	   }
	   else{
		if(m1==155) m1=155;
		else if(m1==65 && m2==65) m1=m1;
		else if(m1==125 && m2==125) m1=m1;
		//else if(takistus==1) x1=x1+30;
		else m1=m1+30;
	   }
	}
    if(kood==KeyEvent.VK_UP){  // LES
	   if(takistus==4 || takistus2==8){  // OR takistus==8
		if(m2==65) m2=m2;
		else if(m2==95 && m1==95) m2=m2;
		else if(y2-y1==-30 && x1==x2){ m2=m2; y1=y1;} //kaks kasti ksteise krval
		else if(y1-y2==-30 && x1==x2){ m2=m2; y2=y2;} //kaks kasti ksteise krval
		else if(takistus==4) y1=y1-30; 
		else if(takistus2==8) y2=y2-30;
		else m2=m2-30;
	   }else{
		if(m2==35) m2=m2;
		else if(m2==65 && m1==95) m2=m2;
		//else if(takistus==4) y1=y1-30;
		else m2=m2-30;
	   }
	}
    if(kood==KeyEvent.VK_DOWN){  // ALLA
	   if(takistus==2 || takistus2==6){
		if(m2==95) m2=m2;
		else if(m2==35 && m1==95) m2=m2;
		else if(y2-y1==30 && x1==x2){ m2=m2; y1=y1;} //kaks kasti ksteise krval
		else if(y1-y2==30 && x1==x2){ m2=m2; y2=y2;} //kaks kasti ksteise krval
		else if(takistus==2) y1=y1+30;
		else if(takistus2==6) y2=y2+30;
		else m2=m2+30;
	   }else{
		if(m2==125) m2=m2;
		else if(m2==35 && m1==95) m2=m2;
		//else if(takistus==4) y1=y1+30;
		else m2=m2+30;
	   }
	}
    repaint();
  }  // repaint!
  
  public void keyReleased(KeyEvent e){}

  public void keyTyped(KeyEvent e){}

public static void main(String[] argumendid){
  Frame f=new Frame();
  f.add(new Kastimang());
  f.setSize(400, 400);
  f.setVisible(true);
}
}