import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; public class ArithmeticGraphLocal { GeneralPath gp; int[] x=new int[4]; int[] a=new int[2]; ListenSquare[][] L=new ListenSquare[3][3]; double X,Y; double d; public ArithmeticGraphLocal(double X,double Y){ for(int i=0;i<3;++i) { for(int j=0;j<3;++j) { L[i][j]=new ListenSquare(X+20*i,-70+Y+20*j,20,20,Color.white); } } this.X=X; this.Y=Y; d=0; a[0]=2; a[1]=4; } public ArithmeticGraphLocal() {} public void print() { System.out.println(x[0]+" "+x[1]+" "+x[2]+" "+x[3]+" "+a[0]+" "+a[1]); } public int match(ArithmeticGraphLocal L) { if((a[0]==L.a[0])&&(a[1]==L.a[1])) return(1); if((a[0]==L.a[1])&&(a[1]==L.a[0])) return(1); return(0); } public int recognizeType(int i,int j) { if((i==1)&&(j==0)) return(1); if((i==1)&&(j==1)) return(2); if((i==0)&&(j==1)) return(3); if((i==-1)&&(j==1)) return(4); if((i==-1)&&(j==0)) return(5); if((i==-1)&&(j==-1)) return(6); if((i==0)&&(j==-1)) return(7); if((i==1)&&(j==-1)) return(8); return(0); } public void toType() { int[] type0={recognizeType(x[0],x[1]),recognizeType(x[2],x[3])}; a[0]=(int)(Math.min(type0[0],type0[1])); a[1]=(int)(Math.max(type0[0],type0[1])); } public void render(Graphics2D g) { GeneralPath gp=new GeneralPath(); for(int i=0;i<2;++i) { gp.reset(); gp.moveTo((float)(X+15),(float)(Y+15)); if(a[i]==1) gp.lineTo((float)(X+30),(float)(Y+15)); if(a[i]==2) gp.lineTo((float)(X+30),(float)(Y)); if(a[i]==3) gp.lineTo((float)(X+15),(float)(Y)); if(a[i]==4) gp.lineTo((float)(X+0),(float)(Y)); if(a[i]==5) gp.lineTo((float)(X+0),(float)(Y+15)); if(a[i]==6) gp.lineTo((float)(X+0),(float)(Y+30)); if(a[i]==7) gp.lineTo((float)(X+15),(float)(Y+30)); if(a[i]==8) gp.lineTo((float)(X+30),(float)(Y+30)); g.setColor(Color.white); g.translate(15,-55); g.draw(gp); g.translate(-15,55); gp.reset(); } for(int i=0;i<3;++i) { for(int j=0;j<3;++j) { L[i][j].on=1; if(i*j!=1) L[i][j].render(g,new Color(50,100,255)); } } } public int processMouse(Point P,int mode) { int s=0; if(mode==1) s=1; if(L[s][2].inside(P)==1) a[s]=6; if(L[1][2].inside(P)==1) a[s]=7; if(L[2][2].inside(P)==1) a[s]=8; if(L[2][1].inside(P)==1) a[s]=1; if(L[2][0].inside(P)==1) a[s]=2; if(L[1][0].inside(P)==1) a[s]=3; if(L[0][0].inside(P)==1) a[s]=4; if(L[0][1].inside(P)==1) a[s]=5; return(0); } }