import java.applet.*; import java.awt.*; import java.awt.event.*; import java.lang.Math; public class t_spin extends Applet implements Runnable{ Thread th = null; Image os; Image ar_l,ar_r; Graphics og; int cR = 78 , cr = 24 , sp = 20 ; double tr = 3.141592/6 *0; double pi = 3.141592 ; int td[] = new int[20]; int dx,dy; int px,py; int rs; public void init(){ os = createImage(12*cr+2*cR+2*sp,5*cr+2*cR+2*sp); og = os.getGraphics(); setBackground(new Color(230,230,250)); ar_l = getImage(getDocumentBase(),"Picture/ar5.gif"); ar_r = getImage(getDocumentBase(),"Picture/ar6.gif"); for(int in = 0;in < 20;in ++){ td[in] = in + 1; } addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ dx = e.getX(); dy = e.getY(); if((dx>90)&&(dx<132)&&(dy>50)&&(dy<93)){ rs = td[0]; for(int ri = 0;ri < 19;ri ++){ td[ri] = td[ri+1]; } td[19] = rs; repaint(); }else if((dx>350)&&(dx<392)&&(dy>50)&&(dy<93)){ rs = td[19]; for(int ri = 0;ri < 19;ri ++){ td[19-ri] = td[18-ri]; } td[0] = rs; repaint(); }else if((dx-242)*(dx-242)+(dy-116)*(dy-116) < 9000){ th.resume(); } } } ); } public void paint(Graphics g){ og.setColor(new Color(230,230,250)); og.fillRect(0,0,12*cr+2*cR+2*sp,5*cr+2*cR+2*sp); og.drawImage(ar_l,90,50,this); og.drawImage(ar_r,350,50,this); og.setColor(Color.black); og.setFont(new Font("Century",Font.ITALIC,30)); og.setColor(new Color(255,255,255)); og.fillOval(2*cr+cR+sp,sp,8*cr,8*cr); for(int dn = 0;dn < 4;dn ++){ px = 5 * cr + cR + (int)((dn*2-3)*cr*Math.cos(tr)) + sp; py = 3 * cr + (int)((dn*2-3)*cr*Math.sin(tr)) + sp; for(int cn = 0;cn < 25;cn ++){ if(td[dn] % 2 == 0){ og.setColor(new Color(250,cn*10,0)); }else{ og.setColor(new Color(0,100+cn*6,0)); } og.drawOval(px+cn,py+cn,2*cr-2*cn,2*cr-2*cn); } og.setColor(new Color(50,0,150)); if(td[dn] < 10){ og.drawString(""+td[dn],px+12,py+32); }else{ og.drawString(""+td[dn],px+4,py+32); } } for(int dn = 0;dn < 6;dn ++){ px = 10 * cr + cR + (int)((double)cR * Math.cos(dn*pi/5-pi/2)) + sp; py = 3 * cr + cR + (int)((double)cR * Math.sin(dn*pi/5-pi/2)) + sp; for(int cn = 0;cn < 25;cn ++){ if(td[dn+4] % 2 == 0){ og.setColor(new Color(250,cn*10,0)); }else{ og.setColor(new Color(0,100+cn*6,0)); } og.drawOval(px+cn,py+cn,2*cr-2*cn,2*cr-2*cn); } og.setColor(new Color(50,0,150)); if(td[dn+4] < 10){ og.drawString(""+td[dn+4],px+12,py+32); }else{ og.drawString(""+td[dn+4],px+4,py+32); } } for(int dn = 0;dn < 4;dn ++){ px = 8 * cr + cR - dn * 2 * cr + sp; py = 3 * cr + 2 * cR + sp; for(int cn = 0;cn < 25;cn ++){ if(td[dn+10] % 2 == 0){ og.setColor(new Color(250,cn*10,0)); }else{ og.setColor(new Color(0,100+cn*6,0)); } og.drawOval(px+cn,py+cn,2*cr-2*cn,2*cr-2*cn); } og.setColor(new Color(50,0,150)); if(td[dn+10] < 10){ og.drawString(""+td[dn+10],px+12,py+32); }else{ og.drawString(""+td[dn+10],px+4,py+32); } } for(int dn = 0;dn < 6;dn ++){ px = cR + (int)((double)cR * Math.cos(dn*pi/5-3*pi/2)) + sp; py = 3 * cr + cR + (int)((double)cR * Math.sin(dn*pi/5-3*pi/2)) + sp; for(int cn = 0;cn < 25;cn ++){ if(td[dn+14] % 2 == 0){ og.setColor(new Color(250,cn*10,0)); }else{ og.setColor(new Color(0,100+cn*6,0)); } og.drawOval(px+cn,py+cn,2*cr-2*cn,2*cr-2*cn); } og.setColor(new Color(50,0,150)); if(td[dn+14] < 10){ og.drawString(""+td[dn+14],px+12,py+32); }else{ og.drawString(""+td[dn+14],px+4,py+32); } } g.drawImage(os,0,0,this); } public void start(){ if(th == null){ th = new Thread(this); th.start(); } th.suspend(); } public void stop(){ th = null; } public void run(){ while (th != null){ try { tr = tr + pi/10; if(tr > pi){ rs = td[0] ; td[0] = td[3] ; td[3] = rs; rs = td[1] ; td[1] = td[2] ; td[2] = rs; tr = 0; th.suspend(); } Thread.sleep(30); } catch (InterruptedException e){ } repaint(); } } public void update(Graphics g){ paint(g) ; } }