import java.awt.*; import java.awt.event.*; import java.applet.*; /** */ public class MouseTest extends Applet implements MouseListener,MouseMotionListener{ int x, y ; String tracer; int firsttime=1; String text=""; int mousex; int mousey; int prevx; int prevy; int xcenter=400; int ycenter=400; int radius=200; int r2=radius*radius; int mousepressed=0; Label txt= new Label(""); Button A=new Button("A"); Button B=new Button("B"); Button C=new Button("C"); Button D=new Button("D"); Button E=new Button("E"); Button F=new Button("F"); Button G=new Button("G"); Button H=new Button("H"); Button I=new Button("I"); Button J=new Button("J"); Button K=new Button("K"); Button L=new Button("L"); Button M=new Button("M"); Button N=new Button("N"); Button O=new Button("O"); Button P=new Button("P"); Button Q=new Button("Q"); Button R=new Button("R"); Button S=new Button("S"); Button T=new Button("T"); Button U=new Button("U"); Button V=new Button("V"); Button W=new Button("W"); Button X=new Button("X"); Button Y=new Button("Y"); Button Z=new Button("Z"); public void init(){ setLayout(null); add(A);add(B);add(C);add(D);add(E);add(F);add(G);add(H);add(I);add(J);add(K);add(L);add(M);add(N); add(O);add(P);add(Q);add(R);add(S);add(T);add(U);add(V);add(W);add(X);add(Y);add(Z); add(txt); addMouseListener(this); addMouseMotionListener(this); // setBackground(Color.red); repaint(); } public void mousePressed(MouseEvent e){ x = e.getX() - 10; y = e.getY() - 10; tracer = " x = " + x + " y = " + y; // repaint the applet mousepressed=1; repaint(); } // dont use these so leave them empty public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} // for mouse motion listener public void mouseMoved(MouseEvent e) { x = e.getX() - 10; y = e.getY() - 10; tracer = " x = " + x + " y = " + y; // repaint the applet mousex=x; mousey=y; repaint(); } public void mouseDragged(MouseEvent e) { } // paint method public void paint(Graphics g){ if(firsttime==1) { draw(g,400,400,200); firsttime=2; //disabling the draw again and again } if(mousexxcenter+radius) mousex=xcenter+radius; else { if(mousex!=prevx) { prevy=ycenter-( (int) (Math.sqrt(r2 - ((xcenter-prevx)*(xcenter-prevx))))); g.setColor(Color.red); g.drawLine(xcenter,ycenter,prevx,prevy+10); y=ycenter-( (int) (Math.sqrt(r2 - ((xcenter-mousex)*(xcenter-mousex))))); g.setColor(Color.yellow); g.drawLine(xcenter,ycenter,mousex,y+10); } } prevx=mousex; prevy=mousey; if(mousepressed==1) { draw(g,400,400,200); identifythecharacter1test(g,xcenter,ycenter,mousex,mousey,radius); g.drawString(text,500,500); mousepressed=0; txt.setText(text); } y=ycenter-( (int) (Math.sqrt(r2 - ((xcenter-mousex)*(xcenter-mousex))))); g.drawLine(xcenter,ycenter,mousex,y+10); } // end of paint void draw(Graphics g,int xcenter,int ycenter,int radius) { int x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8; g.setColor(Color.yellow); drawCircle(g,xcenter,ycenter,radius); g.setColor(Color.blue); int x134,y134,x234,y234; g.setFont(new Font("Serif", Font.ITALIC, 20)); x134= xcenter-(3*radius/4)-(radius/6); x1= xcenter - (3*radius/4); x2= xcenter - (radius/2); x3= xcenter - (radius/4); x4= xcenter; x5= xcenter + (radius/4); x6= xcenter + (radius/2); x7= xcenter + (3*radius/4); x234= xcenter+(3*radius/4)+(radius/6); x8= xcenter+ radius; y1=calculatey(xcenter,ycenter,x1,radius); y2=calculatey(xcenter,ycenter,x2,radius); y3=calculatey(xcenter,ycenter,x3,radius); y5=calculatey(xcenter,ycenter,x5,radius); y6=calculatey(xcenter,ycenter,x6,radius); y7=calculatey(xcenter,ycenter,x7,radius); y134=calculatey(xcenter,ycenter,x134,radius); y234=calculatey(xcenter,ycenter,x234,radius); // first from left outtextxy(g,xcenter-radius+5,ycenter-10,"A"); A.setBounds(new Rectangle(xcenter-radius+5,ycenter-10,20,20)); outtextxy(g,xcenter-radius+7,ycenter-30,"B"); B.setBounds(new Rectangle(xcenter-radius+7,ycenter-30,20,20)); outtextxy(g,x134+5,y134+10,"C"); C.setBounds(new Rectangle(x134+5,y134+10,20,20)); // first from right outtextxy(g,xcenter+radius-7,ycenter-10,"Z"); Z.setBounds(new Rectangle(xcenter+radius-7,ycenter-10,20,20)); outtextxy(g,xcenter+radius-10,ycenter-30,"Y"); Y.setBounds(new Rectangle(xcenter+radius-10,ycenter-30,20,20)); outtextxy(g,x234-5,y234+10,"X"); X.setBounds(new Rectangle(x234-5,y234+10,20,20)); // second quadrant from left outtextxy(g,x134+5,y134-10,"D"); D.setBounds(new Rectangle(x134+5,y134-10,20,20)); outtextxy(g,x134+13,y134-20,"E"); E.setBounds(new Rectangle(x134+13,y134-20,20,20)); outtextxy(g,x1-5,y1+10,"F"); F.setBounds(new Rectangle(x1-5,y1+10,20,20)); // second quadrant from right outtextxy(g,x234-11,y234-10,"W"); W.setBounds(new Rectangle(x234-11,y234-10,20,20)); outtextxy(g,x234-18,y234-20,"V"); V.setBounds(new Rectangle(x234-18,y234-20,20,20)); outtextxy(g,x7-5,y7+10,"U"); U.setBounds(new Rectangle(x7-5,y7+10,20,20)); // this is the 3 quadrant from left outtextxy(g,x1+13,y1-10,"G"); G.setBounds(new Rectangle(x1+13,y1-10,20,20)); outtextxy(g,x1+23,y1-20,"H"); H.setBounds(new Rectangle(x1+23,y1-20,20,20)); outtextxy(g,x2-5,y2+10,"I"); I.setBounds(new Rectangle(x2-5,y2+10,20,20)); // this is the 3 quadrant from right outtextxy(g,x7-18,y7-10,"T"); T.setBounds(new Rectangle(x7-18,y7-10,20,20)); outtextxy(g,x7-28,y7-20,"S"); S.setBounds(new Rectangle(x7-28,y7-20,20,20)); outtextxy(g,x6,y6+10,"R"); R.setBounds(new Rectangle(x6,y6+10,20,20)); // this is the 4 quadrant from left outtextxy(g,x2+8,y2-2,"J"); J.setBounds(new Rectangle(x2+8,y2-2,20,20)); outtextxy(g,x3-8,y3+7,"K"); K.setBounds(new Rectangle(x3-8,y3+7,20,20)); // this is the 4 quadrant from right outtextxy(g,x6-18,y6,"Q"); Q.setBounds(new Rectangle(x6-18,y6,20,20)); outtextxy(g,x5,y5+10,"P"); P.setBounds(new Rectangle(x5,y5+10,20,20)); // this is the 5 quadrant from left outtextxy(g,x3+8,y3,"L"); L.setBounds(new Rectangle(x3+8,y3,20,20)); outtextxy(g,xcenter-12,ycenter-radius+4,"M"); M.setBounds(new Rectangle(xcenter-12,ycenter-radius+4,20,20)); // this is the 5 quadrant from right outtextxy(g,x5-18,y5,"O"); O.setBounds(new Rectangle(x5-18,y5,20,20)); outtextxy(g,xcenter+4,ycenter-radius+3,"N"); N.setBounds(new Rectangle(xcenter+4,ycenter-radius+3,20,20)); } void identifythecharacter(Graphics g,int xcenter,int ycenter,int x,int y,int radius) { int x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8; drawCircle(g,xcenter,ycenter,radius); int x134,y134,x234,y234; x134= xcenter-(3*radius/4)-(radius/6); x1= xcenter - (3*radius/4); x2= xcenter - (radius/2); x3= xcenter - (radius/4); x4= xcenter; x5= xcenter + (radius/4); x6= xcenter + (radius/2); x7= xcenter + (3*radius/4); x234= xcenter+(3*radius/4)+(radius/6); x8= xcenter+ radius; y1=calculatey(xcenter,ycenter,x1,radius); y2=calculatey(xcenter,ycenter,x2,radius); y3=calculatey(xcenter,ycenter,x3,radius); y5=calculatey(xcenter,ycenter,x5,radius); y6=calculatey(xcenter,ycenter,x6,radius); y7=calculatey(xcenter,ycenter,x7,radius); y134=calculatey(xcenter,ycenter,x134,radius); y234=calculatey(xcenter,ycenter,x234,radius); // first from left if(x>(xcenter-radius+5)-5 && x<(xcenter-radius+5)+3) { outtextxy(g,xcenter-radius+5,ycenter-10,"A"); text=text+"A"; } if(x>(xcenter-radius+7)-5 && x<(xcenter-radius+7)+3) { outtextxy(g,xcenter-radius+7,ycenter-30,"B"); text=text+"B"; } if(x>(x134+5)-5 && x<(x134+5)+3) { outtextxy(g,x134+5,y134+10,"C"); text=text+"C"; } // first from right if(x>(xcenter+radius-7)-5 && x<(xcenter+radius-7)+3) { outtextxy(g,xcenter+radius-7,ycenter-10,"Z"); text=text+"Z"; } if(x>(xcenter+radius-10)-5 && x<(xcenter+radius-10)+3) { outtextxy(g,xcenter+radius-10,ycenter-30,"Y"); text=text+"Y"; } if(x>(x234-5)-5 && x<(x234-5)+3) { outtextxy(g,x234-5,y234+10,"X"); text=text+"X"; } // second quadrant from left if(x>(x134+5)-5 && x<(x134+5)+3) { outtextxy(g,x134+5,y134-10,"D"); text=text+"D"; } if(x>(x134+13)-5 && x<(x134+13)+3) { outtextxy(g,x134+13,y134-20,"E"); text=text+"E"; } if(x>(x1-5)-5 && x<(x1-5)+3) { outtextxy(g,x1-5,y1+10,"F"); text=text+"F"; } // second quadrant from right if(x>(x234-11)-5 && x<(x234-11)+3) { outtextxy(g,x234-11,y234-10,"W"); text=text+"W"; } if(x>(x234-18)-5 && x<(x234-18)+3) { outtextxy(g,x234-18,y234-20,"V"); text=text+"V"; } if(x>(x7-5)-5 && x<(x7-5)+3) { outtextxy(g,x7-5,y7+10,"U"); text=text+"U"; } // this is the 3 quadrant from left if(x>(x1+13)-5 && x<(x1+13)+3) { outtextxy(g,x1+13,y1-10,"G"); text=text+"G"; } if(x>(x1+23)-5 && x<(x1+23)+3) { outtextxy(g,x1+23,y1-20,"H"); text=text+"H"; } if(x>(x2-5)-5 && x<(x2-5)+3) { outtextxy(g,x2-5,y2+10,"I"); text=text+"I"; } // this is the 3 quadrant from right if(x>(x7-18)-5 && x<(x7-18)+3) { outtextxy(g,x7-18,y7-10,"T"); text=text+"T"; } if(x>(x7-28)-5 && x<(x7-28)+3) { outtextxy(g,x7-28,y7-20,"S"); text=text+"S"; } if(x>(x6)-5 && x<(x6)+3) { outtextxy(g,x6,y6+10,"R"); text=text+"R"; } // this is the 4 quadrant from left if(x>(x2+8)-5 && x<(x2+8)+3) { outtextxy(g,x2+8,y2-2,"J"); text=text+"J"; } if(x>(x2+8)-5 && x<(x2+8)+3) { outtextxy(g,x3-8,y3+7,"K"); text=text+"K"; } // this is the 4 quadrant from right if(x>(x6-18)-5 && x<(x6-18)+3) { outtextxy(g,x6-18,y6,"Q"); text=text+"Q"; } if(x>(x5)-5 && x<(x5)+3) { outtextxy(g,x5,y5+10,"P"); text=text+"P"; } // this is the 5 quadrant from left if(x>(x3+8)-5 && x<(x3+8)+3) { outtextxy(g,x3+8,y3,"L"); text=text+"L"; } if(x>(xcenter-12)-5 && x<(xcenter-12)+3) { outtextxy(g,xcenter-12,ycenter-radius+4,"M"); text=text+"M"; } // this is the 5 quadrant from right if(x>(x5-18)-5 && x<(x5-18)+3) { outtextxy(g,x5-18,y5,"O"); text=text+"O"; } if(x>(xcenter+4)-5 && x<(xcenter+4)+3) { outtextxy(g,xcenter+4,ycenter-radius+3,"N"); text=text+"N"; } } // end of identify the character. void identifythecharacter1test(Graphics g,int xcenter,int ycenter,int x,int y,int radius) { int x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8; drawCircle(g,xcenter,ycenter,radius); int x134,y134,x234,y234; x134= xcenter-(3*radius/4)-(radius/6); x1= xcenter - (3*radius/4); x2= xcenter - (radius/2); x3= xcenter - (radius/4); x4= xcenter; x5= xcenter + (radius/4); x6= xcenter + (radius/2); x7= xcenter + (3*radius/4); x234= xcenter+(3*radius/4)+(radius/6); x8= xcenter+ radius; y1=calculatey(xcenter,ycenter,x1,radius); y2=calculatey(xcenter,ycenter,x2,radius); y3=calculatey(xcenter,ycenter,x3,radius); y5=calculatey(xcenter,ycenter,x5,radius); y6=calculatey(xcenter,ycenter,x6,radius); y7=calculatey(xcenter,ycenter,x7,radius); y134=calculatey(xcenter,ycenter,x134,radius); y234=calculatey(xcenter,ycenter,x234,radius); // first from left if(x>(xcenter-radius+5)-5 && x<(xcenter-radius+5)+5) { outtextxy(g,xcenter-radius+5,ycenter-10,"A"); text=text+"A"; } if(x>(xcenter-radius+7)-5 && x<(xcenter-radius+7)+5) { outtextxy(g,xcenter-radius+7,ycenter-30,"B"); text=text+"B"; } if(x>(x134+5)-5 && x<(x134+5)+5) { outtextxy(g,x134+5,y134+10,"C"); text=text+"C"; } // first from right if(x>(xcenter+radius-7)-5 && x<(xcenter+radius-7)+5) { outtextxy(g,xcenter+radius-7,ycenter-10,"Z"); text=text+"Z"; } if(x>(xcenter+radius-10)-5 && x<(xcenter+radius-10)+5) { outtextxy(g,xcenter+radius-10,ycenter-30,"Y"); text=text+"Y"; } if(x>(x234-5)-5 && x<(x234-5)+5) { outtextxy(g,x234-5,y234+10,"X"); text=text+"X"; } // second quadrant from left if(x>(x134+5)-5 && x<(x134+5)+5) { outtextxy(g,x134+5,y134-10,"D"); text=text+"D"; } if(x>(x134+13)-5 && x<(x134+13)+5) { outtextxy(g,x134+13,y134-20,"E"); text=text+"E"; } if(x>(x1-5)-5 && x<(x1-5)+5) { outtextxy(g,x1-5,y1+10,"F"); text=text+"F"; } // second quadrant from right if(x>(x234-11)-5 && x<(x234-11)+5) { outtextxy(g,x234-11,y234-10,"W"); text=text+"W"; } if(x>(x234-18)-5 && x<(x234-18)+5) { outtextxy(g,x234-18,y234-20,"V"); text=text+"V"; } if(x>(x7-5)-5 && x<(x7-5)+5) { outtextxy(g,x7-5,y7+10,"U"); text=text+"U"; } // this is the 3 quadrant from left if(x>(x1+13)-5 && x<(x1+13)+5) { outtextxy(g,x1+13,y1-10,"G"); text=text+"G"; } if(x>(x1+23)-5 && x<(x1+23)+5) { outtextxy(g,x1+23,y1-20,"H"); text=text+"H"; } if(x>(x2-5)-5 && x<(x2-5)+5) { outtextxy(g,x2-5,y2+10,"I"); text=text+"I"; } // this is the 3 quadrant from right if(x>(x7-18)-5 && x<(x7-18)+5) { outtextxy(g,x7-18,y7-10,"T"); text=text+"T"; } if(x>(x7-28)-5 && x<(x7-28)+5) { outtextxy(g,x7-28,y7-20,"S"); text=text+"S"; } if(x>(x6)-5 && x<(x6)+5) { outtextxy(g,x6,y6+10,"R"); text=text+"R"; } // this is the 4 quadrant from left if(x>(x2+8)-5 && x<(x2+8)+5) { outtextxy(g,x2+8,y2-2,"J"); text=text+"J"; } if(x>(x2+8)-5 && x<(x2+8)+5) { outtextxy(g,x3-8,y3+7,"K"); text=text+"K"; } // this is the 4 quadrant from right if(x>(x6-18)-5 && x<(x6-18)+5) { outtextxy(g,x6-18,y6,"Q"); text=text+"Q"; } if(x>(x5)-5 && x<(x5)+5) { outtextxy(g,x5,y5+10,"P"); text=text+"P"; } // this is the 5 quadrant from left if(x>(x3+8)-5 && x<(x3+8)+5) { outtextxy(g,x3+8,y3,"L"); text=text+"L"; } if(x>(xcenter-12)-5 && x<(xcenter-12)+5) { outtextxy(g,xcenter-12,ycenter-radius+4,"M"); text=text+"M"; } // this is the 5 quadrant from right if(x>(x5-18)-5 && x<(x5-18)+5) { outtextxy(g,x5-18,y5,"O"); text=text+"O"; } if(x>(xcenter+4)-5 && x<(xcenter+4)+5) { outtextxy(g,xcenter+4,ycenter-radius+3,"N"); text=text+"N"; } } void outtextxy(Graphics g,int x,int y,String ch) { g.drawString(ch,x,y); } void drawCircle(Graphics g, int x, int y, int r) { // Draw a circle on g centered at x, y and radius, r g.drawOval(x-r, y-r, 2*r, 2*r); } // drawCircle int calculatey(int xcenter,int ycenter,int x,int r) { int r2=r*r; int y =ycenter-( (int) (Math.sqrt(r2 - ((xcenter-x)*(xcenter-x))))); return(y); } }