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