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){} } } }; }