import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.math.*;
import java.util.*;
import java.awt.geom.Line2D;


public class Tennis2 extends Applet implements KeyListener{




	int R = 10;
	int x=250;
	int y=125;
	int wx=2*R;
	int wy=2*R;
	int Laius=290;
	int Korgus=275;
	int joonx1=280;
	int joony1=100;
	int joonx2=280;
	int joony2=150;

	double realX,realY;
	Tee tee=new Tee();
	boolean suundx=false;
	boolean suundy=false;

	public Tennis2(){
		tee.start();
		this.addKeyListener(this);
 
	}
	public void paint(Graphics g){
		Ringike(g);
		Jooneke(g);
		Kontroll();
	}
	public void Ringike(Graphics g){
		g.drawOval(x,y,wx,wy);
	   if(suundx){x+=3;}else{x-=3;}
		/*if(suundy){y+=2;}else{y-=2;}*/
	}
	public void Jooneke(Graphics g){
		g.drawLine(joonx1,joony1,joonx2,joony2);
	}
	public void Kontroll(){
		if(x<=0){suundx=true;}
	/*	if(x>=(Laius-wx)){suundx=false;}*/
		/*if(y<=0){suundy=true;}
		if(y>=(Korgus-wy)){suundy=false;}*/
		for(double i=0;i<1;i+=0.1){
			realX = x + Math.cos(i)*R;
			realY = y + Math.sin(i)*R;
			double kaugus = Math.round(Line2D.ptLineDist(joonx1,joony1,joonx2,joony2,realX,realY));
			if(kaugus==0 || kaugus < 4){
				if(realX >= joonx1-3 && realX<=joonx2+3 && realY >= joony1 && realY <= joony2){
					if(suundx){suundx=false;}else{suundx=true;}
			/*		if(suundy){suundy=false;}else{suundy=true;}*/
				}
			}
		}


	}
	public void keyPressed(KeyEvent e){
	/*	if(e.getKeyCode()==KeyEvent.VK_LEFT){
			if(joonx1>=0){
				joonx1-=2; joonx2-=2;
			}
		}
		if(e.getKeyCode()==KeyEvent.VK_RIGHT){
			if(joonx2<=Laius){
				joonx1+=2; joonx2+=2;
			}
		}*/
		if(e.getKeyCode()==KeyEvent.VK_UP){
			if(joony1>=0){
				joony1-=2; joony2-=2;
			}
		}
		if(e.getKeyCode()==KeyEvent.VK_DOWN){
			if(joony2<=Korgus){
				joony1+=2; joony2+=2;
			}
		}

	}
	public void keyReleased(KeyEvent e){}
	public void keyTyped(KeyEvent e){}
	public static void main(String[] args){
		Frame f=new Frame();
		f.add(new Tennis2());
		f.setSize(300,300);
		f.setVisible(true);
	
	}
	class Tee extends Thread{
		public Tee(){
		}
		public void run(){
			while(true){
				repaint();
				try{Thread.sleep(30);}catch(Exception e){}
			}
		}
	};
}
