import java.applet.*; import java.awt.*; import java.awt.event.*; public class mobile extends Applet implements Runnable{ Thread th = null; Image os; Graphics og; int px[] = new int[14]; int py[] = new int[14]; int wn[] = new int[3]; int wd[] = new int[9]; int cs[] = new int[9]; int mx,my,cx,cy,sw,cd,ms; double s1,s2,sv1,sv2,ev1,ev2; public void init(){ os = createImage(600,380); og = os.getGraphics(); addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ cx = e.getX() ; cy = e.getY() ; if((Math.abs(cx-80)<40)&&(Math.abs(cy-35)<15)){ for(int r1 = 0;r1 < 9;r1 ++){ wd[r1] = 0; } s1 = 0 ; s2 = 0; } for(int nn = 0;nn < 3;nn ++){ for(int mm = 0;mm < 3;mm ++){ if((Math.abs(px[11+nn]+20+40*mm-cx)<20)&&(Math.abs(py[11+nn]+10-cy)<10)){ wd[mm+nn*3] ++; if(wd[mm+nn*3] > 9)wd[mm+nn*3] = 9; } if((Math.abs(px[11+nn]+20+40*mm-cx)<20)&&(Math.abs(py[11+nn]+30-cy)<10)){ wd[mm+nn*3] --; if(wd[mm+nn*3] < 0)wd[mm+nn*3] = 0; } } } for(int k1 = 0;k1 < 3;k1 ++)wn[k1] = 100 * wd[0+k1*3] + 10 * wd[1+k1*3] + wd[2+k1*3]; sv1 = s1 ; sv2 = s2 ; if(wn[0] < 2*wn[1]){ ev2 = -0.1 ; ms = 1; }else if(wn[0] == 2*wn[1]){ ev2 = 0 ; ms = 1; }else{ ev2 = 0.1 ; ms = 1; } if(wn[0]+wn[1] < wn[2]){ ev1 = -0.1 ; ms = 1; }else if(wn[0]+wn[1] == wn[2]){ ev1 = 0 ; ms = 1; }else{ ev1 = 0.1 ; ms = 1; } repaint(); } } ); addMouseMotionListener( new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e){ mx = e.getX() ; my = e.getY() ; if(Math.abs(px[11]+60-mx)<60){ if(Math.abs(py[11]+10-my)<10){ sw = 1; }else if(Math.abs(py[11]+30-my)<10){ sw = 2; }else{ sw = 0; } }else if(Math.abs(px[12]+60-mx)<60){ if(Math.abs(py[12]+10-my)<10){ sw = 1; }else if(Math.abs(py[12]+30-my)<10){ sw = 2; }else{ sw = 0; } }else if(Math.abs(px[13]+60-mx)<60){ if(Math.abs(py[13]+10-my)<10){ sw = 1; }else if(Math.abs(py[13]+30-my)<10){ sw = 2; }else{ sw = 0; } }else{ sw = 0; } repaint(); } } ); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,600,380); px[0] = 330 ; py[0] = 40 ; px[1] = px[0] ; py[1] = py[0] + 40 ; px[2] = px[1] - (int)(160*Math.cos(s1)) ; py[2] = py[1] + (int)(160*Math.sin(s1)) ; px[3] = px[1] + (int)(160*Math.cos(s1)) ; py[3] = py[1] - (int)(160*Math.sin(s1)) ; px[4] = px[2] ; py[4] = py[2] + 40 ; px[5] = px[4] - (int)(80*Math.cos(s2)) ; py[5] = py[4] + (int)(80*Math.sin(s2)) ; px[6] = px[4] + (int)(160*Math.cos(s2)) ; py[6] = py[4] - (int)(160*Math.sin(s2)) ; px[7] = px[4] + (int)(80*Math.cos(s2)) ; py[7] = py[4] - (int)(80*Math.sin(s2)) ; px[8] = px[5] ; py[8] = py[5] + 40 ; px[9] = px[6] ; py[9] = py[6] + 40 ; px[10] = px[3] ; py[10] = py[3] + 80 ; px[11] = px[8] - 60 ; py[11] = py[8] ; px[12] = px[9] - 60 ; py[12] = py[9] ; px[13] = px[10] - 60 ; py[13] = py[10] ; og.setColor(new Color(184,134,11)); og.drawLine(px[0],py[0],px[1],py[1]); og.drawLine(px[0]+1,py[0],px[1]+1,py[1]); og.drawLine(px[2],py[2],px[3],py[3]); og.drawLine(px[2],py[2]-1,px[3],py[3]-1); og.drawLine(px[2],py[2],px[4],py[4]); og.drawLine(px[2]+1,py[2],px[4]+1,py[4]); og.drawLine(px[5],py[5],px[6],py[6]); og.drawLine(px[5],py[5]+1,px[6],py[6]+1); og.drawLine(px[5],py[5],px[8],py[8]); og.drawLine(px[5]+1,py[5],px[8]+1,py[8]); og.drawLine(px[6],py[6],px[9],py[9]); og.drawLine(px[6]+1,py[6],px[9]+1,py[9]); og.drawLine(px[3],py[3],px[10],py[10]); og.drawLine(px[3]+1,py[3],px[10]+1,py[10]); og.drawRoundRect(px[11],py[11],120,40,5,5); og.drawRoundRect(px[12],py[12],120,40,5,5); og.drawRoundRect(px[13],py[13],120,40,5,5); og.setColor(new Color(0,0,128)); og.drawRoundRect(px[11]-2,py[11]-2,124,44,7,7); og.drawRoundRect(px[12]-2,py[12]-2,124,44,7,7); og.drawRoundRect(px[13]-2,py[13]-2,124,44,7,7); for(int d1 = 0;d1 < 11;d1 ++)og.fillOval(px[d1]-3,py[d1]-3,7,7); for(int d2 = 0;d2 < 9;d2 ++)cs[d2] = 0; for(int d3 = 0;d3 < 9;d3 ++){ if(wd[d3] != 0)cs[wd[d3]-1] ++; } og.setColor(new Color(135,206,235)); og.fill3DRect(40,20,90,30,true); og.setColor(Color.black); og.setFont(new Font("",Font.BOLD,30)); og.drawString("reset",46,45); og.setFont(new Font("",Font.BOLD,42)); for(int d4 = 0;d4 < 9;d4 ++){ if(wd[d4] == 0){ og.setColor(Color.lightGray); }else if(cs[wd[d4]-1] == 1){ og.setColor(Color.blue); }else { og.setColor(Color.red); } og.drawString(""+wd[d4],px[d4/3+11]+(d4%3)*40+10,py[d4/3+11]+38); } og.setFont(new Font("",Font.BOLD,10)); if(sw == 1){ og.setColor(new Color(0,0,139)); og.fillArc(mx-25,my-46,40,40,255,30); og.setColor(Color.black); og.drawString("up",mx-10,my); }else if(sw == 2){ og.setColor(new Color(0,0,139)); og.fillArc(mx-25,my,40,40,75,30); og.setColor(Color.black); og.drawString("down",mx-17,my); } cd = 1; for(int cc = 0;cc < 9;cc ++)cd = cd * cs[cc]; if((s1 == 0)&&(s2 == 0)&&(cd == 1)){ og.setColor(Color.black); og.setFont(new Font("",Font.BOLD,80)); og.drawString("clear !!",205,144); og.setColor(Color.red); og.setFont(new Font("",Font.BOLD,80)); og.drawString("clear !!",200,140); } g.drawImage(os,0,0,this); } public void start(){ if(th == null){ th = new Thread(this); th.start(); } } public void stop(){ th = null; } public void run(){ while(th != null){ try{ if(ms == 1){ if(sv1 < ev1){ s1 = s1 + 0.01; if(s1 > ev1){ s1 = ev1; } }else if(sv1 > ev1){ s1 = s1 - 0.01; if(s1 < ev1){ s1 = ev1; } } if(sv2 < ev2){ s2 = s2 + 0.01; if(s2 > ev2){ s2 = ev2; } }else if(sv2 > ev2){ s2 = s2 - 0.01; if(s2 < ev2){ s2 = ev2; } } if((s1 == ev1)&&(s2 == ev2))ms = 0; } Thread.sleep(30); } catch (InterruptedException e){ } repaint(); } } public void update( Graphics g ){ paint( g ) ; } }