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