/**
  $B%?%$%H%k(J:$B%9%m%C%H%^%7!<%s$N%"%W%l%C%H(J
  $B:n@.F|(J:02.01.12
**/

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.io.*;


public class Slot extends Applet implements ActionListener{

    SimpleCanvas canv;    //$B<+:n$N%-%c%s%P%9(J
  
    //SimpleCanvas($B<+:n$N%-%c%s%P%9$NDj5A(J)

   class SimpleCanvas extends Canvas implements Runnable{
       int last_num1,last_num2,last_num3; //$B%9%H%C%W%\%?%s$,2!$5$l$?;~$KI=<($5$l$F$$$?3(JA$NHV9f$r5-21$5$;$kJQ?t(J
       Image imgs[];  //$B%9%m%C%H$N3(JA$rI=$92hA|$rJ]B8$9$kG[Ns(J
       boolean SLOT;  //$B%9%l%C%I$N>uBV(J($BDd;_$+<B9T(J)$B$r5-21$5$;$kJQ?t(J
       boolean flag1,flag2,flag3;   //   $B%9%H%C%W%\%?%s$,2!$5$l$?>uBV$r5-21$9$kJQ?t(J  
       Thread th;  //$B%9%m%C%H$N3(JA$N@Z$jBX$($rH?I|$9$k%9%l%C%I(J
       int n; //  $B%9%m%C%H$N3(JA$K$J$k2hA|$rI=$9JQ?t(J
      
	//init$B%a%=%C%I(J:SimpleCanvas$B$N=i4|2=$r9T$&(J
	public void init(){
	    System.out.println("canv.init called");	    
	    setBackground(Color.pink);  //$BGX7J$N?'$r;XDj(J
	    flag1 = false; //$B:8C<$N3(JA$N=i4|>uBV$r!VDd;_!W$K$9$k(J
            flag2 = false; //$B??$sCf$N3(JA$N=i4|>uBV$r!VDd;_!W$K$9$k(J
            flag3 = false; //$B1&C<$N3(JA$N=i4|>uBV$r!VDd;_!W$K$9$k(J
            imgs = new Image[10];  //$B2hA|$r5-21$9$kG[Ns$rMQ0U$9$k(J
            int i;  //$B2hA|$rFI$_9~$`:]$K2hA|$NHV9f$r5-21$9$kJQ?t(J
	    n = 0;  //$B2hA|$rI=<($9$k:]$K2hA|$NHV9f$r5-21$9$kJQ?t(J
	    for(i=0; i<10; i++){
		imgs[i] = getImage(getDocumentBase(), "walk"+i+".gif");
		//$B2hA|$rFI$_9~$`(J
	    }
	    SLOT = true;  //$B%9%l%C%I$N=i4|>uBV$rDd;_$K$7$F$*$/(J
        }
   
       // start$B%a%=%C%I(J:$B2hA|$N@Z$jBX$($r9T$&%9%l%C%I$r3+;O$9$k(J
	    public void start(){
		    System.out.println("canv.start called");
		
		    //$B%9%l%C%I$,6u(J,$BB8:_$7$J$$;~$K$N$_?7$7$$%9%l%C%I$r:n@.(J,$B3+;O$9$k(J
		if(th == null){
		    th = new Thread(this);  //$B?7$7$$%9%l%C%I$r:n@.$9$k(J
		    SLOT = false;  //$B%9%l%C%I$,!V<B9T!W$N>uBV$K$"$k$3$H$r5-21$5$;$k(J
                    flag1 = true; //$B:8C<$N3(JA$r!V2sE>!W>uBV$K$9$k(J
                    flag2 = true; //$B??$sCf$N3(JA$r!V2sE>!W>uBV$K$9$k(J
                    flag3 = true; //$B1&C<$N3(JA$r!V2sE>!W>uBV$K$9$k(J
		    th.start(); //$B?7$7$$%9%l%C%I$N=hM}$r3+;O$9$k(J
		    System.out.println("canv.start if finished");
		} 
	    }
       //stop$B%a%=%C%I(J:$B2hA|$N@Z$jBX$($r9T$&%9%l%C%I$rDd;_$9$k(J

       public void stop(){
           if( th != null ){  //$B%9%l%C%I$,B8:_$9$k>l9g(J,$BGK4~$9$k(J
     		    th = null;  //$B%9%l%C%I$rGK4~$9$k(J
                                       

		    
	   }
       }
       //stop_hidari$B%a%=%C%I(J:$B:8C<$N%9%m%C%H$rDd;_$9$k(J
	    public void stop_hidari(){
	      
		last_num1 = n; //$B%9%H%C%W%\%?%s$,2!$5$l$?;~I=<($7$F$$$?3(JA$r5-21$9$k(J
		flag1 = false; //$B2sE>$r!VDd;_!W$5$;$k(J
		
	    }
       //stop_nama$B%a%=%C%I(J:$B??$sCf$N%9%m%C%H$rDd;_$9$k(J
       public void stop_naka(){
	  
	   last_num2 = n; //$B%9%H%C%W%\%?%s$,2!$5$l$?;~I=<($7$F$$$?3(JA$r5-21$9$k(J
	   flag2 = false;//  $B2sE>$r!VDd;_!W$5$;$k(J
		
           }
      
       //stop_migi$B%a%=%C%I(J:$B1&C<$N%9%m%C%H$rDd;_$9$k(J
       public void stop_migi(){
        
	   last_num3 = n; //$B%9%H%C%W%\%?%s$,2!$5$l$?;~I=<($7$F$$$?3(JA$r5-21$9$k(J
	   flag3 = false;// $B2sE>$r!VDd;_!W$5$;$k(J
		
           }
       
	    //run$B%a%=%C%I(J:$B%9%m%C%H$N3(JA$rI=$92hA|$N:FIA2h$rH?I|$9$k(J
            public void run(){
		System.out.println("canv.run called");
		while( true ){
		    if (n<9){ 
			n=n+1;  //$B2hA|HV9f$,(J9$B0JFb$N>l9g(J,$B2hA|HV9f$O#1A}$($k(J

		    }
		    else if (n==9){
			n=0;  //$B2hA|HV9f$,#9$K$J$C$?;~(J,$B2hA|HV9f$O#0$KLa$k(J

                    }
		    repaint();
                    try{
			Thread.sleep(50);  //$B;k3PE*1i=P$N$?$a%9%l%C%I$r(J50$B%_%jICDd;_$9$k(J
                    }catch(InterruptedException e){
                    }
                    if(SLOT == true){  
			break;  //$B%9%l%C%I$,!VDd;_!W>uBV$K$"$k>l9gL58B%k!<%W$+$iH4$1=P$9(J
                    }
                }
            } 
       

	    //paint$B%a%=%C%I(J:$B%9%m%C%H$N3(JA$rI=<($9$k(J
            public void paint(Graphics g){
		if(flag1 == true){ //$B%9%m%C%H$,!V2sE>!W>uBV$K$"$C$?$i(J
		    g.drawImage (imgs[n], 30, 20, this); // $B3(JA$rIA$-B3$1$k(J
		}
                else if(flag1 == false){ //$B%9%m%C%H$,!VDd;_!W>uBV$K$"$C$?$i(J
		    g.drawImage(imgs[last_num1],30,20,this); //$B$=$N;~$N3($rIA$$$F;_$k(J
		}
		if(flag2==true){ //$B%9%m%C%H$,!V2sE>!W>uBV$@$C$?$i(J
		    g.drawImage(imgs[n],360,20,this); //$B3(JA$rIA$-B3$1$k(J
		}
                else if(flag2 == false) { //$B%9%m%C%H$,!VDd;_!W>uBV$K$"$C$?$i(J
                    g.drawImage(imgs[last_num2],360,20,this);//$B$=$N;~$N3($rIA$$$F;_$k(J
		}
		if(flag3==true){ //$B%9%m%C%H$,!V2sE>!W>uBV$@$C$?$i(J
                    g.drawImage(imgs[n],690,20,this); //$B3($rIA$-B3$1$k(J
		}
                else if(flag3 == false){ //$B%9%m%C%H$,!VDd;_!W>uBV$@$C$?$i(J
                    g.drawImage(imgs[last_num3],690,20,this); //$B$=$N;~$N3($rIA$$$F;_$k(J
 		}
		    
	    }
   }  //SimpleCanvas$B$NDj5A$O$3$3$^$G(J
    


    //init$B%a%=%C%I(J:$B%"%W%l%C%H$N=i4|2=$r9T$&(J
    public void init(){
	//GUI$BItIJ$rMQ0U$9$k(J
	setLayout (new BorderLayout ()); //$B%l%$%"%&%HJ}K!$r7h$a$k(J

        canv = new SimpleCanvas(); //$B<+:n%-%c%s%P%9$rMQ0U$9$k(J
      
        canv.init();  //$B%-%c%s%P%9$N=i4|2=$r9T$&(J
       
        add("Center", canv ); //$B%"%W%l%C%HCf1{$K%-%c%s%P%9$rG[CV$9$k(J
     
 
	Button b1 = new Button ("Stop1"); //$B%9%H%C%W(J1$B%\%?%s$rMQ0U$9$k(J

	Button b2 = new Button ("Stop2"); //$B%9%H%C%W(J2$B%\%?%s$rMQ0U$9$k(J
	Button b3 = new Button ("Stop3"); //$B%9%H%C%W(J3$B%\%?%s$rMQ0U$9$k(J
	Panel p1 = new Panel (); //$B%9%H%C%W#1!A#3%\%?%s$rE=$jIU$1$k%Q%M%k$rMQ0U$9$k(J
	Button b4 = new Button ("Start"); //$B%9%?!<%H%\%?%s$rMQ0U$9$k(J
	Panel p2 = new Panel (); //$B%9%?!<%H%\%?%s$rE=$jIU$1$k%Q%M%k$rMQ0U$9$k(J
	
	b1.setActionCommand("STOP1"); //$B$3$N%\%?%s$,2!$5$l$?$H$-$KH/@8$9$k%$%Y%s%H$N%3%^%s%IL>$r!V(JSTOP1$B!W$HDj$a$k(J
	b1.addActionListener(this); //$B$3$N%\%?%s$N>e$GH/@8$7$?%$%Y%s%H$N%j%9%J!<$O%"%W%l%C%H<+?H$G$"$k$HDj$a$k(J
	p1.add(b1); //$B%Q%M%k#1$K%\%?%s#1$rE=$jIU$1$k(J
	
	b2.setActionCommand("STOP2");  //$B$3$N%\%?%s$,2!$5$l$?$H$-$KH/@8$9$k%$%Y%s%H$N%3%^%s%IL>$r!V(JSTOP2$B!W$HDj$a$k(J
	b2.addActionListener(this); //$B$3$N%\%?%s$N>e$GH/@8$7$?%$%Y%s%H$N%j%9%J!<$O%"%W%l%C%H<+?H$G$"$k$HDj$a$k(J
	p1.add(b2); //$B%Q%M%k#1$K%\%?%s#2$rE=$jIU$1$k(J
	
	
	b3.setActionCommand("STOP3"); //$B$3$N%\%?%s$,2!$5$l$?$H$-$KH/@8$9$k%$%Y%s%H$N%3%^%s%IL>$r!V(JSTOP3$B!W$HDj$a$k(J
	b3.addActionListener(this); //$B$3$N%\%?%s$N>e$GH/@8$7$?%$%Y%s%H$N%j%9%J!<$O%"%W%l%C%H<+?H$G$"$k$HDj$a$k(J
	p1.add(b3); //	$B%Q%M%k#1$K%\%?%s#3$rE=$jIU$1$k(J
	add("South",p1); //$B%Q%M%k$r%"%W%l%C%H$N2<$KE=$jIU$1$k(J
	
	b4.setActionCommand("START"); //$B$3$N%\%?%s$,2!$5$l$?$H$-$KH/@8$9$k%$%Y%s%H$N%3%^%s%IL>$r!V(JSTART$B!W$HDj$a$k(J
	b4.addActionListener(this); //$B$3$N%\%?%s$N>e$GH/@8$7$?%$%Y%s%H$N%j%9%J!<$O%"%W%l%C%H<+?H$G$"$k$HDj$a$k(J
	p2.add(b4); //$B%Q%M%k#1$K%\%?%s#3$rE=$jIU$1(J
	add("North",p2); //$B%Q%M%k$r%"%W%l%C%H$N>e$KE=$jIU$1$k(J
	

    }
    
    // stop$B%a%=%C%I(J:$B%"%W%l%C%H$N=hM}$rDd;_$9$k(J
    public void stop(){
	canv.stop(); //$B%-%c%s%P%9$N%9%l%C%I$rDd;_$9$k(J
      
      
    }
    //actionPerformed$B%a%=%C%I(J:$B%\%?%s$,2!$5$l$?;~$KH/@8$9$k%$%Y%s%H$N=hM}$r9T$&(J
    public void actionPerformed ( ActionEvent e ){
	String command = e.getActionCommand(); //$B%$%Y%s%H$N%3%^%s%IL>$r<u$1<h$k(J
	
	if (command.equals("START")){  //$B%9%?!<%H%\%?%s$,2!$5$l$?>l9g(J
	    System.out.println("button START pushed");
            canv.start(); //$B%-%c%s%P%9$N%9%l%C%I$r3+;O$9$k(J
            
        }
        else if (command.equals("STOP1")){  //$B%9%H%C%W#1%\%?%s$,2!$5$l$?>l9g(J
            canv.stop_hidari(); //$B%-%c%s%P%9$N%9%l%C%I$rDd;_$9$k(J
        }
        else if (command.equals("STOP2")){ //$B%9%H%C%W#2%\%?%s$,2!$5$l$?>l(J
            canv.stop_naka(); //$B%-%c%s%P%9$N%9%l%C%I$rDd;_$9$k(J
        }
        else if (command.equals("STOP3")){  //$B%9%H%C%W(J3$B%\%?%s$,2!$5$l$?>l(J
            canv.stop_migi(); //$B%-%c%s%P%9$N%9%l%C%I$rDd;_$9$k(J
            canv.stop(); //$B%9%l%C%IA4BN$rDd;_$9$k(J
        }
	
        repaint();  //$B:FIA2h(J
    }  
   
}  


















